lexgui 0.5.0 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  var LX = {
9
- version: "0.5.0",
9
+ version: "0.5.2",
10
10
  ready: false,
11
11
  components: [], // Specific pre-build components
12
12
  signals: {}, // Events and triggers
@@ -46,7 +46,7 @@ else if( typeof Date != "undefined" && Date.now )
46
46
  else if ( typeof process != "undefined" )
47
47
  {
48
48
  LX.getTime = function() {
49
- var t = process.hrtime();
49
+ const t = process.hrtime();
50
50
  return t[ 0 ] * 0.001 + t[ 1 ] * 1e-6;
51
51
  };
52
52
  }
@@ -148,7 +148,7 @@ LX.setTheme = setTheme;
148
148
  */
149
149
  function setThemeColor( colorName, color )
150
150
  {
151
- var r = document.querySelector( ':root' );
151
+ const r = document.querySelector( ':root' );
152
152
  r.style.setProperty( '--' + colorName, color );
153
153
  }
154
154
 
@@ -190,10 +190,10 @@ LX.getThemeColor = getThemeColor;
190
190
  */
191
191
  function getBase64Image( img )
192
192
  {
193
- var canvas = document.createElement( 'canvas' );
193
+ const canvas = document.createElement( 'canvas' );
194
194
  canvas.width = img.width;
195
195
  canvas.height = img.height;
196
- var ctx = canvas.getContext( '2d' );
196
+ const ctx = canvas.getContext( '2d' );
197
197
  ctx.drawImage( img, 0, 0 );
198
198
  return canvas.toDataURL( 'image/png' );
199
199
  }
@@ -958,8 +958,8 @@ function init( options = { } )
958
958
  this.root = root;
959
959
  this.container = document.body;
960
960
 
961
- this.modal.classList.add( 'hiddenOpacity' );
962
- this.modal.toggle = function( force ) { this.classList.toggle( 'hiddenOpacity', force ); };
961
+ this.modal.classList.add( 'hidden-opacity' );
962
+ this.modal.toggle = function( force ) { this.classList.toggle( 'hidden-opacity', force ); };
963
963
 
964
964
  if( options.container )
965
965
  {
@@ -1035,6 +1035,17 @@ function init( options = { } )
1035
1035
  this.DEFAULT_SPLITBAR_SIZE = 4;
1036
1036
  this.OPEN_CONTEXTMENU_ENTRY = 'click';
1037
1037
 
1038
+ this.widgetResizeObserver = new ResizeObserver( entries => {
1039
+ for ( const entry of entries )
1040
+ {
1041
+ const widget = entry.target?.jsInstance;
1042
+ if( widget && widget.onResize )
1043
+ {
1044
+ widget.onResize( entry.contentRect );
1045
+ }
1046
+ }
1047
+ });
1048
+
1038
1049
  this.ready = true;
1039
1050
  this.menubars = [ ];
1040
1051
 
@@ -1465,11 +1476,20 @@ LX.addSignal = addSignal;
1465
1476
 
1466
1477
  class DropdownMenu {
1467
1478
 
1479
+ static currentMenu = false;
1480
+
1468
1481
  constructor( trigger, items, options = {} ) {
1469
1482
 
1470
1483
  console.assert( trigger, "DropdownMenu needs a DOM element as trigger!" );
1471
- this._trigger = trigger;
1472
1484
 
1485
+ if( DropdownMenu.currentMenu )
1486
+ {
1487
+ DropdownMenu.currentMenu.destroy();
1488
+ return;
1489
+ }
1490
+
1491
+ this._trigger = trigger;
1492
+ trigger.classList.add( "triggered" );
1473
1493
  trigger.ddm = this;
1474
1494
 
1475
1495
  this._items = items;
@@ -1488,6 +1508,7 @@ class DropdownMenu {
1488
1508
 
1489
1509
  this._create( this._items );
1490
1510
 
1511
+ DropdownMenu.currentMenu = this;
1491
1512
 
1492
1513
  doAsync( () => {
1493
1514
  this._adjustPosition();
@@ -1495,7 +1516,7 @@ class DropdownMenu {
1495
1516
  this.root.focus();
1496
1517
 
1497
1518
  this._onClick = e => {
1498
- if( e.target && ( e.target.className.includes( "lexdropdown" ) || e.target == this._trigger ) )
1519
+ if( e.target && ( this.root.contains( e.target ) || e.target == this._trigger ) )
1499
1520
  {
1500
1521
  return;
1501
1522
  }
@@ -1508,11 +1529,15 @@ class DropdownMenu {
1508
1529
 
1509
1530
  destroy() {
1510
1531
 
1532
+ this._trigger.classList.remove( "triggered" );
1533
+
1511
1534
  delete this._trigger.ddm;
1512
1535
 
1513
1536
  document.body.removeEventListener( "click", this._onClick );
1514
1537
 
1515
1538
  LX.root.querySelectorAll( ".lexdropdownmenu" ).forEach( m => { m.remove(); } );
1539
+
1540
+ DropdownMenu.currentMenu = null;
1516
1541
  }
1517
1542
 
1518
1543
  _create( items, parentDom ) {
@@ -1571,12 +1596,6 @@ class DropdownMenu {
1571
1596
  menuItem.id = pKey;
1572
1597
  menuItem.innerHTML = `<span>${ key }</span>`;
1573
1598
 
1574
- if( item.icon )
1575
- {
1576
- const icon = LX.makeIcon( item.icon );
1577
- menuItem.prepend( icon );
1578
- }
1579
-
1580
1599
  menuItem.tabIndex = "1";
1581
1600
  parentDom.appendChild( menuItem );
1582
1601
 
@@ -1592,15 +1611,41 @@ class DropdownMenu {
1592
1611
  menuItem.appendChild( submenuIcon );
1593
1612
  }
1594
1613
 
1595
- menuItem.addEventListener( "click", () => {
1596
- const f = item[ 'callback' ];
1597
- if( f )
1598
- {
1599
- f.call( this, key, menuItem );
1600
- }
1614
+ if( item.icon )
1615
+ {
1616
+ const icon = LX.makeIcon( item.icon );
1617
+ menuItem.prepend( icon );
1618
+ }
1601
1619
 
1602
- this.destroy();
1603
- } );
1620
+ if( item.checked != undefined )
1621
+ {
1622
+ const checkbox = new Checkbox( pKey + "_entryChecked", item.checked, (v) => {
1623
+ const f = item[ 'callback' ];
1624
+ if( f )
1625
+ {
1626
+ f.call( this, key, menuItem, v );
1627
+ }
1628
+ });
1629
+ const input = checkbox.root.querySelector( "input" );
1630
+ menuItem.prepend( input );
1631
+
1632
+ menuItem.addEventListener( "click", (e) => {
1633
+ if( e.target.type == "checkbox" ) return;
1634
+ input.checked = !input.checked;
1635
+ checkbox.set( input.checked );
1636
+ } );
1637
+ }
1638
+ else
1639
+ {
1640
+ menuItem.addEventListener( "click", () => {
1641
+ const f = item[ 'callback' ];
1642
+ if( f )
1643
+ {
1644
+ f.call( this, key, menuItem );
1645
+ }
1646
+ this.destroy();
1647
+ } );
1648
+ }
1604
1649
 
1605
1650
  menuItem.addEventListener("mouseover", e => {
1606
1651
 
@@ -1770,7 +1815,7 @@ class Area {
1770
1815
 
1771
1816
  if( !options.skipAppend )
1772
1817
  {
1773
- var lexroot = document.getElementById("lexroot");
1818
+ let lexroot = document.getElementById("lexroot");
1774
1819
  lexroot.appendChild( this.root );
1775
1820
  }
1776
1821
 
@@ -1841,12 +1886,12 @@ class Area {
1841
1886
  this.splitBar.addEventListener("mousedown", innerMouseDown);
1842
1887
  this.root.appendChild( this.splitBar );
1843
1888
 
1844
- var that = this;
1845
- var lastMousePosition = [ 0, 0 ];
1889
+ const that = this;
1890
+ let lastMousePosition = [ 0, 0 ];
1846
1891
 
1847
1892
  function innerMouseDown( e )
1848
1893
  {
1849
- var doc = that.root.ownerDocument;
1894
+ const doc = that.root.ownerDocument;
1850
1895
  doc.addEventListener( 'mousemove', innerMouseMove );
1851
1896
  doc.addEventListener( 'mouseup', innerMouseUp );
1852
1897
  lastMousePosition[ 0 ] = e.x;
@@ -1899,7 +1944,7 @@ class Area {
1899
1944
 
1900
1945
  function innerMouseUp( e )
1901
1946
  {
1902
- var doc = that.root.ownerDocument;
1947
+ const doc = that.root.ownerDocument;
1903
1948
  doc.removeEventListener( 'mousemove', innerMouseMove );
1904
1949
  doc.removeEventListener( 'mouseup', innerMouseUp );
1905
1950
  document.body.classList.remove( 'nocursor' );
@@ -1951,9 +1996,9 @@ class Area {
1951
1996
  this.root = this.sections[ 1 ].root;
1952
1997
  }
1953
1998
 
1954
- var type = options.type || "horizontal";
1955
- var sizes = options.sizes || [ "50%", "50%" ];
1956
- var auto = (options.sizes === 'auto');
1999
+ const type = options.type || "horizontal";
2000
+ const sizes = options.sizes || [ "50%", "50%" ];
2001
+ const auto = (options.sizes === 'auto');
1957
2002
 
1958
2003
  if( !sizes[ 1 ] )
1959
2004
  {
@@ -1969,8 +2014,8 @@ class Area {
1969
2014
  }
1970
2015
 
1971
2016
  // Create areas
1972
- var area1 = new Area( { skipAppend: true, className: "split" + ( options.menubar || options.sidebar ? "" : " origin" ) } );
1973
- var area2 = new Area( { skipAppend: true, className: "split" } );
2017
+ let area1 = new Area( { skipAppend: true, className: "split" + ( options.menubar || options.sidebar ? "" : " origin" ) } );
2018
+ let area2 = new Area( { skipAppend: true, className: "split" } );
1974
2019
 
1975
2020
  area1.parentArea = this;
1976
2021
  area2.parentArea = this;
@@ -1978,7 +2023,7 @@ class Area {
1978
2023
  let minimizable = options.minimizable ?? false;
1979
2024
  let resize = ( options.resize ?? true ) || minimizable;
1980
2025
 
1981
- var data = "0px";
2026
+ let data = "0px";
1982
2027
  this.offset = 0;
1983
2028
 
1984
2029
  if( resize )
@@ -2025,7 +2070,7 @@ class Area {
2025
2070
 
2026
2071
  if( type == "horizontal" )
2027
2072
  {
2028
- var width1 = sizes[ 0 ],
2073
+ let width1 = sizes[ 0 ],
2029
2074
  width2 = sizes[ 1 ];
2030
2075
 
2031
2076
  if( width1.constructor == Number )
@@ -2066,7 +2111,7 @@ class Area {
2066
2111
  }
2067
2112
  else
2068
2113
  {
2069
- var height1 = sizes[ 0 ],
2114
+ let height1 = sizes[ 0 ],
2070
2115
  height2 = sizes[ 1 ];
2071
2116
 
2072
2117
  if( height1.constructor == Number )
@@ -2104,11 +2149,11 @@ class Area {
2104
2149
  return this.sections;
2105
2150
  }
2106
2151
 
2107
- var that = this;
2152
+ const that = this;
2108
2153
 
2109
2154
  function innerMouseDown( e )
2110
2155
  {
2111
- var doc = that.root.ownerDocument;
2156
+ const doc = that.root.ownerDocument;
2112
2157
  doc.addEventListener( 'mousemove', innerMouseMove );
2113
2158
  doc.addEventListener( 'mouseup', innerMouseUp );
2114
2159
  e.stopPropagation();
@@ -2128,26 +2173,13 @@ class Area {
2128
2173
  that._moveSplit( -e.movementY );
2129
2174
  }
2130
2175
 
2131
- const widgets = that.root.querySelectorAll( ".lexwidget" );
2132
-
2133
- // Send area resize to every widget in the area
2134
- for( let widget of widgets )
2135
- {
2136
- const jsInstance = widget.jsInstance;
2137
-
2138
- if( jsInstance.onresize )
2139
- {
2140
- jsInstance.onresize();
2141
- }
2142
- }
2143
-
2144
2176
  e.stopPropagation();
2145
2177
  e.preventDefault();
2146
2178
  }
2147
2179
 
2148
2180
  function innerMouseUp( e )
2149
2181
  {
2150
- var doc = that.root.ownerDocument;
2182
+ const doc = that.root.ownerDocument;
2151
2183
  doc.removeEventListener( 'mousemove', innerMouseMove );
2152
2184
  doc.removeEventListener( 'mouseup', innerMouseUp );
2153
2185
  document.body.classList.remove( 'nocursor' );
@@ -2295,7 +2327,7 @@ class Area {
2295
2327
 
2296
2328
  propagateEvent( eventName ) {
2297
2329
 
2298
- for( var i = 0; i < this.sections.length; i++ )
2330
+ for( let i = 0; i < this.sections.length; i++ )
2299
2331
  {
2300
2332
  const area = this.sections[ i ];
2301
2333
 
@@ -2421,7 +2453,7 @@ class Area {
2421
2453
 
2422
2454
  if( float )
2423
2455
  {
2424
- for( var i = 0; i < float.length; i++ )
2456
+ for( let i = 0; i < float.length; i++ )
2425
2457
  {
2426
2458
  const t = float[i];
2427
2459
  switch( t )
@@ -2640,7 +2672,7 @@ class Area {
2640
2672
 
2641
2673
  for( var i = 0; i < this.sections.length; i++ )
2642
2674
  {
2643
- this.sections[i]._update();
2675
+ this.sections[ i ]._update();
2644
2676
  }
2645
2677
  }
2646
2678
  };
@@ -2690,38 +2722,56 @@ class Tabs {
2690
2722
  e.preventDefault(); // Prevent default action (open as link for some elements)
2691
2723
 
2692
2724
  const tabId = e.dataTransfer.getData( "source" );
2693
- const el = document.getElementById( tabId );
2694
- if( !el ) return;
2725
+ const tabDom = document.getElementById( tabId );
2726
+ if( !tabDom ) return;
2695
2727
 
2728
+ const sourceContainer = tabDom.parentElement;
2696
2729
  const target = e.target;
2697
2730
  const rect = target.getBoundingClientRect();
2698
2731
 
2699
2732
  if( e.offsetX < ( rect.width * 0.5 ) )
2700
2733
  {
2701
- this.insertBefore( el, target );
2734
+ this.insertBefore( tabDom, target );
2702
2735
  }
2703
2736
  else if( target.nextElementSibling )
2704
2737
  {
2705
- this.insertBefore( el, target.nextElementSibling );
2738
+ this.insertBefore( tabDom, target.nextElementSibling );
2706
2739
  }
2707
2740
  else
2708
2741
  {
2709
- this.appendChild( el );
2742
+ this.appendChild( tabDom );
2710
2743
  }
2711
2744
 
2745
+ {
2746
+ // Update childIndex for fit mode tabs in source container
2747
+ sourceContainer.childNodes.forEach( (c, idx) => c.childIndex = ( idx - 1 ) );
2748
+
2749
+ // If needed, set last tab of source container active
2750
+ const sourceAsFit = (/true/).test( e.dataTransfer.getData( "fit" ) );
2751
+ if( sourceContainer.childElementCount == ( sourceAsFit ? 2 : 1 ) )
2752
+ {
2753
+ sourceContainer.lastChild.click(); // single tab or thumb first (fit mode)
2754
+ }
2755
+ else
2756
+ {
2757
+ const sourceSelected = sourceContainer.querySelector( ".selected" );
2758
+ ( sourceSelected ?? sourceContainer.childNodes[ sourceAsFit ? 1 : 0 ] ).click();
2759
+ }
2760
+ }
2761
+
2762
+ // Update childIndex for fit mode tabs in target container
2763
+ this.childNodes.forEach( (c, idx) => c.childIndex = ( idx - 1 ) );
2764
+
2712
2765
  const content = document.getElementById( tabId + "_content" );
2713
2766
  that.area.attach( content );
2714
2767
  this.classList.remove("dockingtab");
2715
2768
 
2716
- // Change tabs instance
2717
- LX.emit( "@on_tab_docked" );
2718
- el.instance = that;
2719
-
2720
- // Show on drop
2721
- el.click();
2769
+ // Change tabs instance and select on drop
2770
+ tabDom.instance = that;
2771
+ tabDom.click();
2722
2772
 
2723
2773
  // Store info
2724
- that.tabs[ el.dataset["name"] ] = content;
2774
+ that.tabs[ tabDom.dataset["name"] ] = content;
2725
2775
  });
2726
2776
 
2727
2777
  area.root.classList.add( "lexareatabscontainer" );
@@ -2767,7 +2817,7 @@ class Tabs {
2767
2817
 
2768
2818
  if( folding == "up" )
2769
2819
  {
2770
- area.root.insertChildAtIndex(area.sections[1].root, 0);
2820
+ area.root.insertChildAtIndex( area.sections[ 1 ].root, 0 );
2771
2821
  }
2772
2822
 
2773
2823
  // Listen resize event on parent area
@@ -2834,18 +2884,13 @@ class Tabs {
2834
2884
  this.selected = name;
2835
2885
  }
2836
2886
 
2837
- LX.addSignal( "@on_tab_docked", tabEl, function() {
2838
- if( this.parentElement.childNodes.length == 1 )
2839
- {
2840
- this.parentElement.childNodes[ 0 ].click(); // single tab!!
2841
- }
2842
- } );
2843
-
2844
2887
  tabEl.addEventListener("click", e => {
2845
2888
 
2846
2889
  e.preventDefault();
2847
2890
  e.stopPropagation();
2848
2891
 
2892
+ const scope = tabEl.instance;
2893
+
2849
2894
  if( !tabEl.fixed )
2850
2895
  {
2851
2896
  // For folding tabs
@@ -2856,15 +2901,15 @@ class Tabs {
2856
2901
  tabEl.parentElement.querySelectorAll( 'span' ).forEach( s => s.classList.remove( 'selected' ));
2857
2902
  tabEl.classList.toggle('selected', ( this.folding && tabEl.selected ));
2858
2903
  // Manage visibility
2859
- tabEl.instance.area.root.querySelectorAll( '.lextabcontent' ).forEach( c => c.style.display = 'none' );
2904
+ scope.area.root.querySelectorAll( '.lextabcontent' ).forEach( c => c.style.display = 'none' );
2860
2905
  contentEl.style.display = contentEl.originalDisplay;
2861
- tabEl.instance.selected = tabEl.dataset.name;
2906
+ scope.selected = tabEl.dataset.name;
2862
2907
  }
2863
2908
 
2864
- if( this.folding )
2909
+ if( scope.folding )
2865
2910
  {
2866
- this.folded = tabEl.selected;
2867
- this.area.root.classList.toggle( 'folded', !this.folded );
2911
+ scope.folded = tabEl.selected;
2912
+ scope.area.root.classList.toggle( 'folded', !scope.folded );
2868
2913
  }
2869
2914
 
2870
2915
  if( options.onSelect )
@@ -2872,12 +2917,12 @@ class Tabs {
2872
2917
  options.onSelect(e, tabEl.dataset.name);
2873
2918
  }
2874
2919
 
2875
- if( this.thumb )
2920
+ if( scope.thumb )
2876
2921
  {
2877
- this.thumb.style.transform = "translate( " + ( tabEl.childIndex * tabEl.offsetWidth ) + "px )";
2878
- this.thumb.style.width = ( tabEl.offsetWidth - 5 ) + "px";
2879
- this.thumb.style.height = ( tabEl.offsetHeight - 6 ) + "px";
2880
- this.thumb.item = tabEl;
2922
+ scope.thumb.style.transform = "translate( " + ( tabEl.childIndex * tabEl.offsetWidth ) + "px )";
2923
+ scope.thumb.style.width = ( tabEl.offsetWidth - 5 ) + "px";
2924
+ scope.thumb.style.height = ( tabEl.offsetHeight - 6 ) + "px";
2925
+ scope.thumb.item = tabEl;
2881
2926
  }
2882
2927
  });
2883
2928
 
@@ -2901,12 +2946,14 @@ class Tabs {
2901
2946
  });
2902
2947
 
2903
2948
  tabEl.setAttribute( 'draggable', true );
2904
- tabEl.addEventListener( 'dragstart', function( e ) {
2905
- if( this.parentElement.childNodes.length == 1 ){
2949
+ tabEl.addEventListener( 'dragstart', e => {
2950
+ const sourceAsFit = !!this.thumb;
2951
+ if( tabEl.parentElement.childNodes.length == ( sourceAsFit ? 2 : 1 ) ){
2906
2952
  e.preventDefault();
2907
2953
  return;
2908
2954
  }
2909
2955
  e.dataTransfer.setData( 'source', e.target.id );
2956
+ e.dataTransfer.setData( 'fit', sourceAsFit );
2910
2957
  });
2911
2958
 
2912
2959
  // Attach content
@@ -4349,6 +4396,8 @@ class Widget {
4349
4396
  {
4350
4397
  root.style.height = root.style.minHeight = options.height;
4351
4398
  }
4399
+
4400
+ LX.widgetResizeObserver.observe( root );
4352
4401
  }
4353
4402
 
4354
4403
  if( name != undefined )
@@ -4409,10 +4458,11 @@ class Widget {
4409
4458
 
4410
4459
  _addResetProperty( container, callback ) {
4411
4460
 
4412
- var domEl = document.createElement('a');
4461
+ const domEl = LX.makeIcon( "rotate-left", "Reset" )
4413
4462
  domEl.style.display = "none";
4414
4463
  domEl.style.marginRight = "6px";
4415
- domEl.className = "lexicon fa fa-rotate-left";
4464
+ domEl.style.marginLeft = "0";
4465
+ domEl.style.paddingInline = "6px";
4416
4466
  domEl.addEventListener( "click", callback );
4417
4467
  container.appendChild( domEl );
4418
4468
  return domEl;
@@ -4548,15 +4598,17 @@ LX.Widget = Widget;
4548
4598
 
4549
4599
  function ADD_CUSTOM_WIDGET( customWidgetName, options = {} )
4550
4600
  {
4551
- let custom_idx = simple_guidGenerator();
4601
+ let customIdx = simple_guidGenerator();
4552
4602
 
4553
4603
  Panel.prototype[ 'add' + customWidgetName ] = function( name, instance, callback ) {
4554
4604
 
4605
+ options.nameWidth = "100%";
4606
+
4555
4607
  let widget = new Widget( Widget.CUSTOM, name, null, options );
4556
4608
  this._attachWidget( widget );
4557
4609
 
4558
4610
  widget.customName = customWidgetName;
4559
- widget.customIdx = custom_idx;
4611
+ widget.customIdx = customIdx;
4560
4612
 
4561
4613
  widget.onGetValue = () => {
4562
4614
  return instance;
@@ -4573,7 +4625,6 @@ function ADD_CUSTOM_WIDGET( customWidgetName, options = {} )
4573
4625
  };
4574
4626
 
4575
4627
  const element = widget.root;
4576
- element.style.flexWrap = "wrap";
4577
4628
 
4578
4629
  let container, customWidgetsDom;
4579
4630
  let default_instance = options.default ?? {};
@@ -4592,11 +4643,12 @@ function ADD_CUSTOM_WIDGET( customWidgetName, options = {} )
4592
4643
 
4593
4644
  container = document.createElement('div');
4594
4645
  container.className = "lexcustomcontainer";
4595
- container.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
4646
+ container.style.width = "100%";
4647
+ element.appendChild( container );
4596
4648
 
4597
4649
  let buttonName = "<a class='fa-solid " + (options.icon ?? "fa-cube") + "' style='float:left'></a>";
4598
4650
  buttonName += customWidgetName + (!instance ? " [empty]" : "");
4599
- // Add alwayis icon to keep spacing right
4651
+ // Add always icon to keep spacing right
4600
4652
  buttonName += "<a class='fa-solid " + (instance ? "fa-bars-staggered" : " ") + " menu' style='float:right; width:5%;'></a>";
4601
4653
 
4602
4654
  let buttonEl = this.addButton(null, buttonName, (value, event) => {
@@ -4616,7 +4668,6 @@ function ADD_CUSTOM_WIDGET( customWidgetName, options = {} )
4616
4668
  }
4617
4669
 
4618
4670
  }, { buttonClass: 'custom' });
4619
-
4620
4671
  container.appendChild( buttonEl.root );
4621
4672
 
4622
4673
  if( instance )
@@ -4638,8 +4689,6 @@ function ADD_CUSTOM_WIDGET( customWidgetName, options = {} )
4638
4689
  customWidgetsDom = document.createElement('div');
4639
4690
  customWidgetsDom.className = "lexcustomitems";
4640
4691
  customWidgetsDom.toggleAttribute('hidden', true);
4641
-
4642
- element.appendChild( container );
4643
4692
  element.appendChild( customWidgetsDom );
4644
4693
 
4645
4694
  if( instance )
@@ -4710,24 +4759,32 @@ class NodeTree {
4710
4759
  this.options = options;
4711
4760
  this.selected = [];
4712
4761
 
4713
- if(data.constructor === Object)
4714
- this._create_item( null, data );
4762
+ this._forceClose = false;
4763
+
4764
+ if( data.constructor === Object )
4765
+ {
4766
+ this._createItem( null, data );
4767
+ }
4715
4768
  else
4769
+ {
4716
4770
  for( let d of data )
4717
- this._create_item( null, d );
4771
+ {
4772
+ this._createItem( null, d );
4773
+ }
4774
+ }
4718
4775
  }
4719
4776
 
4720
- _create_item( parent, node, level = 0, selectedId ) {
4777
+ _createItem( parent, node, level = 0, selectedId ) {
4721
4778
 
4722
4779
  const that = this;
4723
4780
  const nodeFilterInput = this.domEl.querySelector( "#lexnodetree_filter" );
4724
4781
 
4725
4782
  node.children = node.children ?? [];
4726
- if( nodeFilterInput && !node.id.includes( nodeFilterInput.value ) || (selectedId != undefined) && selectedId != node.id )
4783
+ if( nodeFilterInput && nodeFilterInput.value != "" && !node.id.includes( nodeFilterInput.value ) )
4727
4784
  {
4728
4785
  for( var i = 0; i < node.children.length; ++i )
4729
4786
  {
4730
- this._create_item( node, node.children[ i ], level + 1, selectedId );
4787
+ this._createItem( node, node.children[ i ], level + 1, selectedId );
4731
4788
  }
4732
4789
  return;
4733
4790
  }
@@ -4750,11 +4807,15 @@ class NodeTree {
4750
4807
  item.className = "lextreeitem " + "datalevel" + level + (isParent ? " parent" : "") + (isSelected ? " selected" : "");
4751
4808
  item.id = LX.getSupportedDOMName( node.id );
4752
4809
  item.tabIndex = "0";
4810
+ item.treeData = node;
4753
4811
 
4754
4812
  // Select hierarchy icon
4755
4813
  let icon = (this.options.skip_default_icon ?? true) ? "" : "fa-solid fa-square"; // Default: no childs
4756
- if( isParent ) icon = node.closed ? "fa-solid fa-caret-right" : "fa-solid fa-caret-down";
4757
- item.innerHTML = "<a class='" + icon + " hierarchy'></a>";
4814
+ if( isParent )
4815
+ {
4816
+ icon = node.closed ? "fa-solid fa-caret-right" : "fa-solid fa-caret-down";
4817
+ item.innerHTML = "<a class='" + icon + " hierarchy'></a>";
4818
+ }
4758
4819
 
4759
4820
  // Add display icon
4760
4821
  icon = node.icon;
@@ -4774,7 +4835,7 @@ class NodeTree {
4774
4835
  item.innerHTML += (node.rename ? "" : node.id);
4775
4836
 
4776
4837
  item.setAttribute( 'draggable', true );
4777
- item.style.paddingLeft = ((isParent ? 0 : 3 ) + (3 + (level+1) * 15)) + "px";
4838
+ item.style.paddingLeft = ((3 + (level+1) * 15)) + "px";
4778
4839
  list.appendChild( item );
4779
4840
 
4780
4841
  // Callbacks
@@ -4858,7 +4919,7 @@ class NodeTree {
4858
4919
 
4859
4920
  that.onevent( event );
4860
4921
 
4861
- if( ( this.options.addDefault ?? false ) == true )
4922
+ if( this.options.addDefault ?? false )
4862
4923
  {
4863
4924
  if( event.panel.items )
4864
4925
  {
@@ -4882,18 +4943,20 @@ class NodeTree {
4882
4943
  }
4883
4944
 
4884
4945
  let nodeItem = this.domEl.querySelector( '#' + child.id );
4885
- nodeItem.classList.add('selected');
4946
+ nodeItem.classList.add( "selected" );
4886
4947
  this.selected.push( child );
4887
4948
  selectChildren( child );
4888
4949
  }
4889
4950
  };
4890
4951
 
4952
+ this.domEl.querySelectorAll( ".selected" ).forEach( i => i.classList.remove( "selected" ) );
4953
+ this.selected.length = 0;
4954
+
4891
4955
  // Add childs of the clicked node
4892
4956
  selectChildren( node );
4893
4957
  } );
4894
4958
 
4895
4959
  event.panel.add( "Delete", { callback: () => {
4896
-
4897
4960
  // It's the root node
4898
4961
  if( !node.parent )
4899
4962
  {
@@ -4985,7 +5048,7 @@ class NodeTree {
4985
5048
  node.id = LX.getSupportedDOMName( this.value );
4986
5049
  delete node.rename;
4987
5050
  that.frefresh( node.id );
4988
- list.querySelector("#" + node.id).classList.add('selected');
5051
+ list.querySelector( "#" + node.id ).classList.add('selected');
4989
5052
  }
4990
5053
  else if(e.key == "Escape")
4991
5054
  {
@@ -5075,7 +5138,22 @@ class NodeTree {
5075
5138
  e.stopImmediatePropagation();
5076
5139
  e.stopPropagation();
5077
5140
 
5078
- node.closed = !node.closed;
5141
+ if( e.altKey )
5142
+ {
5143
+ const _closeNode = function( node ) {
5144
+ node.closed = !node.closed;
5145
+ for( var c of node.children )
5146
+ {
5147
+ _closeNode( c );
5148
+ }
5149
+ };
5150
+ _closeNode( node );
5151
+ }
5152
+ else
5153
+ {
5154
+ node.closed = !node.closed;
5155
+ }
5156
+
5079
5157
  if( that.onevent )
5080
5158
  {
5081
5159
  const event = new TreeEvent(TreeEvent.NODE_CARETCHANGED, node, node.closed);
@@ -5127,13 +5205,18 @@ class NodeTree {
5127
5205
  inputContainer.appendChild( visibility );
5128
5206
  }
5129
5207
 
5130
- if( selectedId != undefined && node.id == selectedId )
5131
- {
5132
- this.selected = [ node ];
5133
- item.click();
5134
- }
5208
+ const _hasChild = function( parent, id ) {
5209
+ if( !parent.length ) return;
5210
+ for( var c of parent.children )
5211
+ {
5212
+ if( c.id == id ) return true;
5213
+ return _hasChild( c, id );
5214
+ }
5215
+ };
5216
+
5217
+ const exists = _hasChild( node, selectedId );
5135
5218
 
5136
- if( node.closed )
5219
+ if( node.closed && !exists )
5137
5220
  {
5138
5221
  return;
5139
5222
  }
@@ -5147,25 +5230,42 @@ class NodeTree {
5147
5230
  continue;
5148
5231
  }
5149
5232
 
5150
- this._create_item( node, child, level + 1 );
5233
+ this._createItem( node, child, level + 1, selectedId );
5151
5234
  }
5152
5235
  }
5153
5236
 
5154
5237
  refresh( newData, selectedId ) {
5238
+
5155
5239
  this.data = newData ?? this.data;
5156
5240
  this.domEl.querySelector( "ul" ).innerHTML = "";
5157
- this._create_item( null, this.data, 0, selectedId );
5241
+ this._createItem( null, this.data, 0, selectedId );
5158
5242
  }
5159
5243
 
5160
5244
  /* Refreshes the tree and focuses current element */
5161
5245
  frefresh( id ) {
5246
+
5162
5247
  this.refresh();
5163
5248
  var el = this.domEl.querySelector( "#" + id );
5164
- if( el ) el.focus();
5249
+ if( el )
5250
+ {
5251
+ el.focus();
5252
+ }
5165
5253
  }
5166
5254
 
5167
5255
  select( id ) {
5256
+
5168
5257
  this.refresh( null, id );
5258
+
5259
+ this.domEl.querySelectorAll( ".selected" ).forEach( i => i.classList.remove( "selected" ) );
5260
+ this.selected.length = 0;
5261
+
5262
+ var el = this.domEl.querySelector( "#" + id );
5263
+ if( el )
5264
+ {
5265
+ el.classList.add( "selected" );
5266
+ this.selected = [ el.treeData ];
5267
+ el.focus();
5268
+ }
5169
5269
  }
5170
5270
  }
5171
5271
 
@@ -5271,6 +5371,11 @@ class TextInput extends Widget {
5271
5371
  }
5272
5372
  };
5273
5373
 
5374
+ this.onResize = ( rect ) => {
5375
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
5376
+ container.style.width = options.inputWidth ?? `calc( 100% - ${ realNameWidth }px)`;
5377
+ };
5378
+
5274
5379
  this.valid = ( v ) => {
5275
5380
  v = v ?? this.value();
5276
5381
  if( !v.length || wValue.pattern == "" ) return true;
@@ -5280,8 +5385,8 @@ class TextInput extends Widget {
5280
5385
 
5281
5386
  let container = document.createElement( 'div' );
5282
5387
  container.className = "lextext" + ( options.warning ? " lexwarning" : "" );
5283
- container.style.width = options.inputWidth || "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + " )";
5284
5388
  container.style.display = "flex";
5389
+ this.root.appendChild( container );
5285
5390
 
5286
5391
  if( options.textClass )
5287
5392
  {
@@ -5360,20 +5465,13 @@ class TextInput extends Widget {
5360
5465
  wValue.innerHTML = ( icon + value ) || "";
5361
5466
  wValue.style.width = "100%";
5362
5467
  wValue.style.textAlign = options.float ?? "";
5468
+ wValue.className = "ellipsis-overflow";
5363
5469
  }
5364
5470
 
5365
5471
  Object.assign( wValue.style, options.style ?? {} );
5366
-
5367
5472
  container.appendChild( wValue );
5368
- this.root.appendChild( container );
5369
5473
 
5370
- // Remove branch padding and margins
5371
- const useNameAsLabel = !( options.hideName ?? false );
5372
- if( !useNameAsLabel )
5373
- {
5374
- this.root.className += " noname";
5375
- container.style.width = "100%";
5376
- }
5474
+ doAsync( this.onResize.bind( this ) );
5377
5475
  }
5378
5476
  }
5379
5477
 
@@ -5404,17 +5502,22 @@ class TextArea extends Widget {
5404
5502
  }
5405
5503
  };
5406
5504
 
5505
+ this.onResize = ( rect ) => {
5506
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
5507
+ container.style.width = options.inputWidth ?? `calc( 100% - ${ realNameWidth }px)`;
5508
+ };
5509
+
5407
5510
  let container = document.createElement( "div" );
5408
5511
  container.className = "lextextarea";
5409
- container.style.width = options.inputWidth || "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + " )";
5410
- container.style.height = options.height;
5411
5512
  container.style.display = "flex";
5513
+ this.root.appendChild( container );
5412
5514
 
5413
5515
  let wValue = document.createElement( "textarea" );
5414
5516
  wValue.value = wValue.iValue = value || "";
5415
5517
  wValue.style.width = "100%";
5416
5518
  wValue.style.textAlign = options.float ?? "";
5417
5519
  Object.assign( wValue.style, options.style ?? {} );
5520
+ container.appendChild( wValue );
5418
5521
 
5419
5522
  if( options.disabled ?? false ) wValue.setAttribute( "disabled", true );
5420
5523
  if( options.placeholder ) wValue.setAttribute( "placeholder", options.placeholder );
@@ -5448,24 +5551,16 @@ class TextArea extends Widget {
5448
5551
  container.appendChild( icon );
5449
5552
  }
5450
5553
 
5451
- container.appendChild( wValue );
5452
- this.root.appendChild( container );
5453
-
5454
- // Remove branch padding and margins
5455
- const useNameAsLabel = !( options.hideName ?? false );
5456
- if( !useNameAsLabel )
5457
- {
5458
- this.root.className += " noname";
5459
- container.style.width = "100%";
5460
- }
5461
-
5462
- // Do this after creating the DOM element
5463
5554
  doAsync( () => {
5555
+ container.style.height = options.height;
5556
+
5464
5557
  if( options.fitHeight )
5465
5558
  {
5466
5559
  // Update height depending on the content
5467
5560
  wValue.style.height = wValue.scrollHeight + "px";
5468
5561
  }
5562
+
5563
+ this.onResize();
5469
5564
  }, 10 );
5470
5565
  }
5471
5566
  }
@@ -5493,9 +5588,15 @@ class Button extends Widget {
5493
5588
  ( options.img ? "<img src='" + options.img + "'>" : "<span>" + ( newValue || "" ) + "</span>" ) );
5494
5589
  };
5495
5590
 
5591
+ this.onResize = ( rect ) => {
5592
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
5593
+ wValue.style.width = `calc( 100% - ${ realNameWidth }px)`;
5594
+ };
5595
+
5496
5596
  var wValue = document.createElement( 'button' );
5497
5597
  wValue.title = options.title ?? "";
5498
5598
  wValue.className = "lexbutton " + ( options.buttonClass ?? "" );
5599
+ this.root.appendChild( wValue );
5499
5600
 
5500
5601
  if( options.selected )
5501
5602
  {
@@ -5506,8 +5607,6 @@ class Button extends Widget {
5506
5607
  ( options.icon ? "<a class='" + options.icon + "'></a>" :
5507
5608
  ( options.img ? "<img src='" + options.img + "'>" : "<span>" + ( value || "" ) + "</span>" ) );
5508
5609
 
5509
- wValue.style.width = "calc( 100% - " + ( options.nameWidth ?? LX.DEFAULT_NAME_WIDTH ) + ")";
5510
-
5511
5610
  if( options.disabled )
5512
5611
  {
5513
5612
  wValue.setAttribute( "disabled", true );
@@ -5527,15 +5626,7 @@ class Button extends Widget {
5527
5626
  this._trigger( new IEvent( name, value, e ), callback );
5528
5627
  });
5529
5628
 
5530
- this.root.appendChild( wValue );
5531
-
5532
- // Remove branch padding and
5533
- const useNameAsLabel = !( options.hideName ?? false ) && !( options.icon || options.img );
5534
- if( !useNameAsLabel )
5535
- {
5536
- wValue.className += " noname";
5537
- wValue.style.width = "100%";
5538
- }
5629
+ doAsync( this.onResize.bind( this ) );
5539
5630
  }
5540
5631
  }
5541
5632
 
@@ -5563,11 +5654,10 @@ class ComboButtons extends Widget {
5563
5654
  container.className += options.float;
5564
5655
  }
5565
5656
 
5566
- container.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
5567
-
5568
5657
  let currentValue = [];
5569
5658
  let buttonsBox = document.createElement('div');
5570
5659
  buttonsBox.className = "lexcombobuttonsbox ";
5660
+ container.appendChild( buttonsBox );
5571
5661
 
5572
5662
  for( let b of values )
5573
5663
  {
@@ -5679,16 +5769,14 @@ class ComboButtons extends Widget {
5679
5769
  }
5680
5770
  };
5681
5771
 
5682
- // Remove branch padding and margins
5683
- const useNameAsLabel = !( options.hideName ?? false );
5684
- if( !useNameAsLabel )
5685
- {
5686
- this.root.className += " noname";
5687
- container.style.width = "100%";
5688
- }
5772
+ this.onResize = ( rect ) => {
5773
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
5774
+ container.style.width = `calc( 100% - ${ realNameWidth }px)`;
5775
+ };
5689
5776
 
5690
- container.appendChild( buttonsBox );
5691
5777
  this.root.appendChild( container );
5778
+
5779
+ doAsync( this.onResize.bind( this ) );
5692
5780
  }
5693
5781
  }
5694
5782
 
@@ -5710,6 +5798,7 @@ class Card extends Widget {
5710
5798
  let container = document.createElement('div');
5711
5799
  container.className = "lexcard";
5712
5800
  container.style.width = "100%";
5801
+ this.root.appendChild( container );
5713
5802
 
5714
5803
  if( options.img )
5715
5804
  {
@@ -5732,6 +5821,7 @@ class Card extends Widget {
5732
5821
 
5733
5822
  let cardNameDom = document.createElement('span');
5734
5823
  cardNameDom.innerText = name;
5824
+ container.appendChild( cardNameDom );
5735
5825
 
5736
5826
  if( options.link != undefined )
5737
5827
  {
@@ -5750,9 +5840,6 @@ class Card extends Widget {
5750
5840
  this._trigger( new IEvent( name, null, e ), options.callback );
5751
5841
  });
5752
5842
  }
5753
-
5754
- container.appendChild( cardNameDom );
5755
- this.root.appendChild( container );
5756
5843
  }
5757
5844
  }
5758
5845
 
@@ -5801,7 +5888,9 @@ class Form extends Widget {
5801
5888
 
5802
5889
  let container = document.createElement( 'div' );
5803
5890
  container.className = "lexformdata";
5891
+ container.style.width = "100%";
5804
5892
  container.formData = {};
5893
+ this.root.appendChild( container );
5805
5894
 
5806
5895
  for( let entry in data )
5807
5896
  {
@@ -5846,12 +5935,6 @@ class Form extends Widget {
5846
5935
  }, { buttonClass: "primary", width: "calc(100% - 10px)" } );
5847
5936
 
5848
5937
  container.appendChild( submitButton.root );
5849
-
5850
- this.root.appendChild( container );
5851
-
5852
- // Form does not never use label
5853
- this.root.className += " noname";
5854
- container.style.width = "100%";
5855
5938
  }
5856
5939
  }
5857
5940
 
@@ -5903,9 +5986,14 @@ class Select extends Widget {
5903
5986
  }
5904
5987
  };
5905
5988
 
5989
+ this.onResize = ( rect ) => {
5990
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
5991
+ container.style.width = options.inputWidth ?? `calc( 100% - ${ realNameWidth }px)`;
5992
+ };
5993
+
5906
5994
  let container = document.createElement( "div" );
5907
5995
  container.className = "lexselect";
5908
- container.style.width = options.inputWidth || "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
5996
+ this.root.appendChild( container );
5909
5997
 
5910
5998
  let wValue = document.createElement( 'div' );
5911
5999
  wValue.className = "lexselect lexoption";
@@ -6064,7 +6152,7 @@ class Select extends Widget {
6064
6152
  filterOptions.skipWidget = filterOptions.skipWidget ?? true;
6065
6153
  filterOptions.trigger = "input";
6066
6154
  filterOptions.icon = "fa-solid fa-magnifying-glass";
6067
- filterOptions.className = "lexfilter noname";
6155
+ filterOptions.className = "lexfilter";
6068
6156
 
6069
6157
  let filter = new TextInput(null, options.filterValue ?? "", ( v ) => {
6070
6158
  const filteredOptions = this._filterOptions( values, v );
@@ -6181,15 +6269,8 @@ class Select extends Widget {
6181
6269
  list.refresh( values );
6182
6270
 
6183
6271
  container.appendChild( listDialog );
6184
- this.root.appendChild( container );
6185
6272
 
6186
- // Remove branch padding and margins
6187
- const useNameAsLabel = !( options.hideName ?? false );
6188
- if( !useNameAsLabel )
6189
- {
6190
- this.root.className += " noname";
6191
- container.style.width = "100%";
6192
- }
6273
+ doAsync( this.onResize.bind( this ) );
6193
6274
  }
6194
6275
 
6195
6276
  _filterOptions( options, value ) {
@@ -6245,9 +6326,17 @@ class Curve extends Widget {
6245
6326
  }
6246
6327
  };
6247
6328
 
6329
+ this.onResize = ( rect ) => {
6330
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
6331
+ container.style.width = `calc( 100% - ${ realNameWidth }px)`;
6332
+ flushCss( container );
6333
+ curveInstance.canvas.width = container.offsetWidth;
6334
+ curveInstance.redraw();
6335
+ };
6336
+
6248
6337
  var container = document.createElement( "div" );
6249
6338
  container.className = "lexcurve";
6250
- container.style.width = this.name ? "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")" : "100%";
6339
+ this.root.appendChild( container );
6251
6340
 
6252
6341
  options.callback = (v, e) => {
6253
6342
  this._trigger( new IEvent( name, v, e ), callback );
@@ -6257,16 +6346,9 @@ class Curve extends Widget {
6257
6346
 
6258
6347
  let curveInstance = new CanvasCurve( values, options );
6259
6348
  container.appendChild( curveInstance.element );
6260
- this.root.appendChild( container );
6261
-
6262
- // Resize
6263
- this.onresize = curveInstance.redraw.bind( curveInstance );
6264
6349
  this.curveInstance = curveInstance;
6265
6350
 
6266
- doAsync(() => {
6267
- curveInstance.canvas.width = container.offsetWidth;
6268
- curveInstance.redraw();
6269
- });
6351
+ doAsync( this.onResize.bind( this ) );
6270
6352
  }
6271
6353
  }
6272
6354
 
@@ -6286,21 +6368,32 @@ class Dial extends Widget {
6286
6368
  super( Widget.DIAL, name, defaultValues, options );
6287
6369
 
6288
6370
  this.onGetValue = () => {
6289
- return JSON.parse( JSON.stringify( curveInstance.element.value ) );
6371
+ return JSON.parse( JSON.stringify( dialInstance.element.value ) );
6290
6372
  };
6291
6373
 
6292
6374
  this.onSetValue = ( newValue, skipCallback, event ) => {
6293
- curveInstance.element.value = JSON.parse( JSON.stringify( newValue ) );
6294
- curveInstance.redraw();
6375
+ dialInstance.element.value = JSON.parse( JSON.stringify( newValue ) );
6376
+ dialInstance.redraw();
6295
6377
  if( !skipCallback )
6296
6378
  {
6297
- this._trigger( new IEvent( name, curveInstance.element.value, event ), callback );
6379
+ this._trigger( new IEvent( name, dialInstance.element.value, event ), callback );
6298
6380
  }
6299
6381
  };
6300
6382
 
6383
+ this.onResize = ( rect ) => {
6384
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
6385
+ container.style.width = `calc( 100% - ${ realNameWidth }px)`;
6386
+ flushCss( container );
6387
+ dialInstance.element.style.height = dialInstance.element.offsetWidth + "px";
6388
+ dialInstance.canvas.width = dialInstance.element.offsetWidth;
6389
+ container.style.width = dialInstance.element.offsetWidth + "px";
6390
+ dialInstance.canvas.height = dialInstance.canvas.width;
6391
+ dialInstance.redraw();
6392
+ };
6393
+
6301
6394
  var container = document.createElement( "div" );
6302
6395
  container.className = "lexcurve";
6303
- container.style.width = this.name ? "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")" : "100%";
6396
+ this.root.appendChild( container );
6304
6397
 
6305
6398
  options.callback = ( v, e ) => {
6306
6399
  this._trigger( new IEvent( name, v, e ), callback );
@@ -6308,21 +6401,11 @@ class Dial extends Widget {
6308
6401
 
6309
6402
  options.name = name;
6310
6403
 
6311
- let curveInstance = new CanvasDial( this, values, options );
6312
- container.appendChild( curveInstance.element );
6313
- this.root.appendChild( container );
6314
-
6315
- // Resize
6316
- this.onresize = curveInstance.redraw.bind( curveInstance );
6317
- this.curveInstance = curveInstance;
6404
+ let dialInstance = new CanvasDial( this, values, options );
6405
+ container.appendChild( dialInstance.element );
6406
+ this.dialInstance = dialInstance;
6318
6407
 
6319
- doAsync(() => {
6320
- curveInstance.element.style.height = curveInstance.element.offsetWidth + "px";
6321
- curveInstance.canvas.width = curveInstance.element.offsetWidth;
6322
- container.style.width = curveInstance.element.offsetWidth + "px";
6323
- curveInstance.canvas.height = curveInstance.canvas.width;
6324
- curveInstance.redraw();
6325
- });
6408
+ doAsync( this.onResize.bind( this ) );
6326
6409
  }
6327
6410
  }
6328
6411
 
@@ -6345,22 +6428,27 @@ class Layers extends Widget {
6345
6428
 
6346
6429
  this.onSetValue = ( newValue, skipCallback, event ) => {
6347
6430
  value = newValue;
6348
- setLayers();
6431
+ this.setLayers( value );
6349
6432
  if( !skipCallback )
6350
6433
  {
6351
6434
  this._trigger( new IEvent(name, value, event), callback );
6352
6435
  }
6353
6436
  };
6354
6437
 
6438
+ this.onResize = ( rect ) => {
6439
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
6440
+ container.style.width = `calc( 100% - ${ realNameWidth }px)`;
6441
+ };
6442
+
6355
6443
  var container = document.createElement( "div" );
6356
6444
  container.className = "lexlayers";
6357
- container.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
6445
+ this.root.appendChild( container );
6358
6446
 
6359
- const setLayers = () => {
6447
+ this.setLayers = ( val ) => {
6360
6448
 
6361
6449
  container.innerHTML = "";
6362
6450
 
6363
- let binary = value.toString( 2 );
6451
+ let binary = val.toString( 2 );
6364
6452
  let nbits = binary.length;
6365
6453
 
6366
6454
  // fill zeros
@@ -6374,7 +6462,7 @@ class Layers extends Widget {
6374
6462
  let layer = document.createElement( "div" );
6375
6463
  layer.className = "lexlayer";
6376
6464
 
6377
- if( value != undefined )
6465
+ if( val != undefined )
6378
6466
  {
6379
6467
  const valueBit = binary[ 16 - bit - 1 ];
6380
6468
  if( valueBit != undefined && valueBit == '1' )
@@ -6391,15 +6479,15 @@ class Layers extends Widget {
6391
6479
  e.stopPropagation();
6392
6480
  e.stopImmediatePropagation();
6393
6481
  e.target.classList.toggle( "selected" );
6394
- const newValue = value ^ ( 1 << bit );
6482
+ const newValue = val ^ ( 1 << bit );
6395
6483
  this.set( newValue, false, e );
6396
6484
  } );
6397
6485
  }
6398
6486
  };
6399
6487
 
6400
- setLayers();
6488
+ this.setLayers( value );
6401
6489
 
6402
- this.root.appendChild( container );
6490
+ doAsync( this.onResize.bind( this ) );
6403
6491
  }
6404
6492
  }
6405
6493
 
@@ -6414,6 +6502,8 @@ class ItemArray extends Widget {
6414
6502
 
6415
6503
  constructor( name, values = [], callback, options = {} ) {
6416
6504
 
6505
+ options.nameWidth = "100%";
6506
+
6417
6507
  super( Widget.ARRAY, name, null, options );
6418
6508
 
6419
6509
  this.onGetValue = () => {
@@ -6429,15 +6519,14 @@ class ItemArray extends Widget {
6429
6519
  }
6430
6520
  };
6431
6521
 
6432
- this.root.style.flexWrap = "wrap";
6433
-
6434
6522
  // Add open array button
6435
6523
 
6436
6524
  const itemNameWidth = "4%";
6437
6525
 
6438
6526
  var container = document.createElement('div');
6439
6527
  container.className = "lexarray";
6440
- container.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
6528
+ container.style.width = "100%";
6529
+ this.root.appendChild( container );
6441
6530
 
6442
6531
  const angleDown = `<a class='fa-solid fa-angle-down' style='float:right; margin-right: 3px;'></a>`;
6443
6532
 
@@ -6447,7 +6536,6 @@ class ItemArray extends Widget {
6447
6536
  const toggleButton = new Button(null, buttonName, () => {
6448
6537
  this.root.querySelector(".lexarrayitems").toggleAttribute('hidden');
6449
6538
  }, { buttonClass: 'array' });
6450
-
6451
6539
  container.appendChild( toggleButton.root );
6452
6540
 
6453
6541
  // Show elements
@@ -6455,8 +6543,6 @@ class ItemArray extends Widget {
6455
6543
  let arrayItems = document.createElement( "div" );
6456
6544
  arrayItems.className = "lexarrayitems";
6457
6545
  arrayItems.toggleAttribute( "hidden", true );
6458
-
6459
- this.root.appendChild( container );
6460
6546
  this.root.appendChild( arrayItems );
6461
6547
 
6462
6548
  this._updateItems = () => {
@@ -6473,10 +6559,6 @@ class ItemArray extends Widget {
6473
6559
  {
6474
6560
  const value = values[ i ];
6475
6561
  let baseclass = options.innerValues ? 'select' : value.constructor;
6476
-
6477
- // TODO
6478
- // this.sameLine( 2 );
6479
-
6480
6562
  let widget = null;
6481
6563
 
6482
6564
  switch( baseclass )
@@ -6505,13 +6587,13 @@ class ItemArray extends Widget {
6505
6587
 
6506
6588
  arrayItems.appendChild( widget.root );
6507
6589
 
6508
- widget = new Button( null, "<a class='lexicon fa-solid fa-trash'></a>", ( v, event) => {
6590
+ const removeWidget = new Button( null, "<a class='lexicon fa-solid fa-trash'></a>", ( v, event) => {
6509
6591
  values.splice( values.indexOf( value ), 1 );
6510
6592
  this._updateItems();
6511
6593
  this._trigger( new IEvent(name, values, event), callback );
6512
6594
  }, { title: "Remove item", className: 'micro'} );
6513
6595
 
6514
- arrayItems.appendChild( widget.root );
6596
+ widget.root.appendChild( removeWidget.root );
6515
6597
  }
6516
6598
 
6517
6599
  buttonName = "Add item";
@@ -6576,6 +6658,11 @@ class List extends Widget {
6576
6658
  }
6577
6659
  };
6578
6660
 
6661
+ this.onResize = ( rect ) => {
6662
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
6663
+ listContainer.style.width = `calc( 100% - ${ realNameWidth }px)`;
6664
+ };
6665
+
6579
6666
  this._updateValues = ( newValues ) => {
6580
6667
 
6581
6668
  values = newValues;
@@ -6611,19 +6698,11 @@ class List extends Widget {
6611
6698
 
6612
6699
  let listContainer = document.createElement( 'div' );
6613
6700
  listContainer.className = "lexlist";
6614
- listContainer.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
6701
+ this.root.appendChild( listContainer );
6615
6702
 
6616
6703
  this._updateValues( values );
6617
6704
 
6618
- // Remove branch padding and margins
6619
- const useNameAsLabel = !( options.hideName ?? false );
6620
- if( !useNameAsLabel )
6621
- {
6622
- this.root.className += " noname";
6623
- listContainer.style.width = "100%";
6624
- }
6625
-
6626
- this.root.appendChild( listContainer );
6705
+ doAsync( this.onResize.bind( this ) );
6627
6706
  }
6628
6707
  }
6629
6708
 
@@ -6649,20 +6728,25 @@ class Tags extends Widget {
6649
6728
 
6650
6729
  this.onSetValue = ( newValue, skipCallback, event ) => {
6651
6730
  value = [].concat( newValue );
6652
- _generateTags();
6731
+ this.generateTags( value );
6653
6732
  if( !skipCallback )
6654
6733
  {
6655
6734
  this._trigger( new IEvent( name, value, event ), callback );
6656
6735
  }
6657
6736
  };
6658
6737
 
6738
+ this.onResize = ( rect ) => {
6739
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
6740
+ tagsContainer.style.width = `calc( 100% - ${ realNameWidth }px)`;
6741
+ };
6742
+
6659
6743
  // Show tags
6660
6744
 
6661
6745
  const tagsContainer = document.createElement('div');
6662
6746
  tagsContainer.className = "lextags";
6663
- tagsContainer.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
6747
+ this.root.appendChild( tagsContainer );
6664
6748
 
6665
- const _generateTags = () => {
6749
+ this.generateTags = ( value ) => {
6666
6750
 
6667
6751
  tagsContainer.innerHTML = "";
6668
6752
 
@@ -6706,17 +6790,9 @@ class Tags extends Widget {
6706
6790
  tagInput.focus();
6707
6791
  }
6708
6792
 
6709
- _generateTags();
6793
+ this.generateTags( value );
6710
6794
 
6711
- // Remove branch padding and margins
6712
- const useNameAsLabel = !( options.hideName ?? false );
6713
- if( !useNameAsLabel )
6714
- {
6715
- this.root.className += " noname";
6716
- tagsContainer.style.width = "100%";
6717
- }
6718
-
6719
- this.root.appendChild( tagsContainer );
6795
+ doAsync( this.onResize.bind( this ) );
6720
6796
  }
6721
6797
  }
6722
6798
 
@@ -6760,31 +6836,33 @@ class Checkbox extends Widget {
6760
6836
  }
6761
6837
  };
6762
6838
 
6839
+ this.onResize = ( rect ) => {
6840
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
6841
+ container.style.width = options.inputWidth ?? `calc( 100% - ${ realNameWidth }px)`;
6842
+ };
6843
+
6763
6844
  var container = document.createElement( "div" );
6764
6845
  container.className = "lexcheckboxcont";
6846
+ this.root.appendChild( container );
6765
6847
 
6766
6848
  let checkbox = document.createElement( "input" );
6767
6849
  checkbox.type = "checkbox";
6768
6850
  checkbox.className = "lexcheckbox " + ( options.className ?? "" );
6769
6851
  checkbox.checked = value;
6770
6852
  checkbox.disabled = options.disabled ?? false;
6853
+ container.appendChild( checkbox );
6771
6854
 
6772
6855
  let valueName = document.createElement( "span" );
6773
6856
  valueName.className = "checkboxtext";
6774
6857
  valueName.innerHTML = options.label ?? "On";
6775
-
6776
- container.appendChild( checkbox );
6777
6858
  container.appendChild( valueName );
6778
6859
 
6779
6860
  checkbox.addEventListener( "change" , e => {
6780
6861
  this.set( checkbox.checked, false, e );
6781
6862
  });
6782
6863
 
6783
- this.root.appendChild( container );
6784
-
6785
6864
  if( options.suboptions )
6786
6865
  {
6787
- this.root.style.flexWrap = "wrap";
6788
6866
  let suboptions = document.createElement( "div" );
6789
6867
  suboptions.className = "lexcheckboxsubmenu";
6790
6868
  suboptions.toggleAttribute( "hidden", !checkbox.checked );
@@ -6796,6 +6874,8 @@ class Checkbox extends Widget {
6796
6874
 
6797
6875
  this.root.appendChild( suboptions );
6798
6876
  }
6877
+
6878
+ doAsync( this.onResize.bind( this ) );
6799
6879
  }
6800
6880
  }
6801
6881
 
@@ -6810,6 +6890,11 @@ class Toggle extends Widget {
6810
6890
 
6811
6891
  constructor( name, value, callback, options = {} ) {
6812
6892
 
6893
+ if( !name && !options.label )
6894
+ {
6895
+ throw( "Set Widget Name or at least a label!" );
6896
+ }
6897
+
6813
6898
  super( Widget.TOGGLE, name, value, options );
6814
6899
 
6815
6900
  this.onGetValue = () => {
@@ -6834,8 +6919,14 @@ class Toggle extends Widget {
6834
6919
  }
6835
6920
  };
6836
6921
 
6922
+ this.onResize = ( rect ) => {
6923
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
6924
+ container.style.width = options.inputWidth ?? `calc( 100% - ${ realNameWidth }px)`;
6925
+ };
6926
+
6837
6927
  var container = document.createElement('div');
6838
6928
  container.className = "lextogglecont";
6929
+ this.root.appendChild( container );
6839
6930
 
6840
6931
  let toggle = document.createElement('input');
6841
6932
  toggle.type = "checkbox";
@@ -6843,23 +6934,19 @@ class Toggle extends Widget {
6843
6934
  toggle.checked = value;
6844
6935
  toggle.iValue = value;
6845
6936
  toggle.disabled = options.disabled ?? false;
6937
+ container.appendChild( toggle );
6846
6938
 
6847
6939
  let valueName = document.createElement( 'span' );
6848
6940
  valueName.className = "toggletext";
6849
- valueName.innerHTML = "On";
6850
-
6851
- container.appendChild( toggle );
6941
+ valueName.innerHTML = options.label ?? "On";
6852
6942
  container.appendChild( valueName );
6853
6943
 
6854
6944
  toggle.addEventListener( "change" , e => {
6855
6945
  this.set( toggle.checked, false, e );
6856
6946
  });
6857
6947
 
6858
- this.root.appendChild( container );
6859
-
6860
6948
  if( options.suboptions )
6861
6949
  {
6862
- this.root.style.flexWrap = "wrap";
6863
6950
  let suboptions = document.createElement('div');
6864
6951
  suboptions.className = "lextogglesubmenu";
6865
6952
  suboptions.toggleAttribute( 'hidden', !toggle.checked );
@@ -6871,6 +6958,8 @@ class Toggle extends Widget {
6871
6958
 
6872
6959
  this.root.appendChild( suboptions );
6873
6960
  }
6961
+
6962
+ doAsync( this.onResize.bind( this ) );
6874
6963
  }
6875
6964
  }
6876
6965
 
@@ -6915,6 +7004,7 @@ class RadioGroup extends Widget {
6915
7004
 
6916
7005
  var container = document.createElement( 'div' );
6917
7006
  container.className = "lexradiogroup " + ( options.className ?? "" );
7007
+ this.root.appendChild( container );
6918
7008
 
6919
7009
  let labelSpan = document.createElement( 'span' );
6920
7010
  labelSpan.innerHTML = label;
@@ -6949,8 +7039,6 @@ class RadioGroup extends Widget {
6949
7039
  currentIndex = options.selected;
6950
7040
  this.set( currentIndex, true );
6951
7041
  }
6952
-
6953
- this.root.appendChild( container );
6954
7042
  }
6955
7043
  }
6956
7044
 
@@ -6994,9 +7082,14 @@ class ColorInput extends Widget {
6994
7082
  }
6995
7083
  };
6996
7084
 
7085
+ this.onResize = ( rect ) => {
7086
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
7087
+ container.style.width = `calc( 100% - ${ realNameWidth }px)`;
7088
+ };
7089
+
6997
7090
  var container = document.createElement( 'span' );
6998
7091
  container.className = "lexcolor";
6999
- container.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
7092
+ this.root.appendChild( container );
7000
7093
 
7001
7094
  let color = document.createElement( 'input' );
7002
7095
  color.style.width = "32px";
@@ -7005,6 +7098,7 @@ class ColorInput extends Widget {
7005
7098
  color.id = "color" + simple_guidGenerator();
7006
7099
  color.useRGB = options.useRGB ?? false;
7007
7100
  color.value = color.iValue = value;
7101
+ container.appendChild( color );
7008
7102
 
7009
7103
  if( options.disabled )
7010
7104
  {
@@ -7015,17 +7109,14 @@ class ColorInput extends Widget {
7015
7109
  this.set( e.target.value, false, e );
7016
7110
  }, false );
7017
7111
 
7018
- container.appendChild( color );
7019
-
7020
7112
  const textWidget = new TextInput( null, color.value, v => {
7021
7113
  this.set( v );
7022
7114
  }, { width: "calc( 100% - 32px )"});
7023
7115
 
7024
7116
  textWidget.root.style.marginLeft = "4px";
7025
-
7026
7117
  container.appendChild( textWidget.root );
7027
7118
 
7028
- this.root.appendChild( container );
7119
+ doAsync( this.onResize.bind( this ) );
7029
7120
  }
7030
7121
  }
7031
7122
 
@@ -7061,9 +7152,14 @@ class RangeInput extends Widget {
7061
7152
  }
7062
7153
  };
7063
7154
 
7064
- var container = document.createElement( 'div' );
7155
+ this.onResize = ( rect ) => {
7156
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
7157
+ container.style.width = options.inputWidth ?? `calc( 100% - ${ realNameWidth }px)`;
7158
+ };
7159
+
7160
+ const container = document.createElement( 'div' );
7065
7161
  container.className = "lexrange";
7066
- container.style.width = options.inputWidth || "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
7162
+ this.root.appendChild( container );
7067
7163
 
7068
7164
  let slider = document.createElement( 'input' );
7069
7165
  slider.className = "lexrangeslider " + ( options.className ?? "" );
@@ -7073,6 +7169,7 @@ class RangeInput extends Widget {
7073
7169
  slider.step = options.step ?? 1;
7074
7170
  slider.type = "range";
7075
7171
  slider.disabled = options.disabled ?? false;
7172
+ container.appendChild( slider );
7076
7173
 
7077
7174
  if( options.left ?? false )
7078
7175
  {
@@ -7115,15 +7212,7 @@ class RangeInput extends Widget {
7115
7212
  value = clamp( value, +slider.min, +slider.max );
7116
7213
  }
7117
7214
 
7118
- container.appendChild( slider );
7119
- this.root.appendChild( container );
7120
-
7121
- const useNameAsLabel = !( options.hideName ?? false );
7122
- if( !useNameAsLabel )
7123
- {
7124
- this.root.className += " noname";
7125
- container.style.width = "100%";
7126
- }
7215
+ doAsync( this.onResize.bind( this ) );
7127
7216
  }
7128
7217
  }
7129
7218
 
@@ -7171,12 +7260,18 @@ class NumberInput extends Widget {
7171
7260
  }
7172
7261
  };
7173
7262
 
7263
+ this.onResize = ( rect ) => {
7264
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
7265
+ container.style.width = options.inputWidth ?? `calc( 100% - ${ realNameWidth }px)`;
7266
+ };
7267
+
7174
7268
  var container = document.createElement( 'div' );
7175
7269
  container.className = "lexnumber";
7176
- container.style.width = options.inputWidth || "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
7270
+ this.root.appendChild( container );
7177
7271
 
7178
7272
  let box = document.createElement( 'div' );
7179
7273
  box.className = "numberbox";
7274
+ container.appendChild( box );
7180
7275
 
7181
7276
  let vecinput = document.createElement( 'input' );
7182
7277
  vecinput.id = "number_" + simple_guidGenerator();
@@ -7350,16 +7445,7 @@ class NumberInput extends Widget {
7350
7445
 
7351
7446
  vecinput.addEventListener( "mousedown", innerMouseDown );
7352
7447
 
7353
- container.appendChild( box );
7354
- this.root.appendChild( container );
7355
-
7356
- // Remove branch padding and margins
7357
- const useNameAsLabel = !( options.hideName ?? false );
7358
- if( !useNameAsLabel )
7359
- {
7360
- this.root.className += " noname";
7361
- container.style.width = "100%";
7362
- }
7448
+ doAsync( this.onResize.bind( this ) );
7363
7449
  }
7364
7450
  }
7365
7451
 
@@ -7411,11 +7497,16 @@ class Vector extends Widget {
7411
7497
  }
7412
7498
  };
7413
7499
 
7500
+ this.onResize = ( rect ) => {
7501
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
7502
+ container.style.width = `calc( 100% - ${ realNameWidth }px)`;
7503
+ };
7504
+
7414
7505
  const vectorInputs = [];
7415
7506
 
7416
7507
  var container = document.createElement( 'div' );
7417
7508
  container.className = "lexvector";
7418
- container.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
7509
+ this.root.appendChild( container );
7419
7510
 
7420
7511
  const that = this;
7421
7512
 
@@ -7618,7 +7709,7 @@ class Vector extends Widget {
7618
7709
  }
7619
7710
  }, false );
7620
7711
 
7621
- this.root.appendChild( container );
7712
+ doAsync( this.onResize.bind( this ) );
7622
7713
  }
7623
7714
  }
7624
7715
 
@@ -7719,14 +7810,6 @@ class SizeInput extends Widget {
7719
7810
  }
7720
7811
  }, false );
7721
7812
  }
7722
-
7723
- // Remove branch padding and margins
7724
- const useNameAsLabel = !( options.hideName ?? false );
7725
- if( !useNameAsLabel )
7726
- {
7727
- this.root.className += " noname";
7728
- container.style.width = "100%";
7729
- }
7730
7813
  }
7731
7814
  }
7732
7815
 
@@ -7756,21 +7839,28 @@ class Pad extends Widget {
7756
7839
  }
7757
7840
  };
7758
7841
 
7842
+ this.onResize = ( rect ) => {
7843
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
7844
+ container.style.width = `calc( 100% - ${ realNameWidth }px)`;
7845
+ };
7846
+
7759
7847
  var container = document.createElement( 'div' );
7760
7848
  container.className = "lexpad";
7761
- container.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
7849
+ this.root.appendChild( container );
7762
7850
 
7763
7851
  let pad = document.createElement('div');
7764
7852
  pad.id = "lexpad-" + name;
7765
7853
  pad.className = "lexinnerpad";
7766
7854
  pad.style.width = options.padSize ?? '96px';
7767
7855
  pad.style.height = options.padSize ?? '96px';
7856
+ container.appendChild( pad );
7768
7857
 
7769
7858
  let thumb = document.createElement('div');
7770
7859
  thumb.className = "lexpadthumb";
7771
7860
  thumb.value = new LX.vec2( value[ 0 ], value[ 1 ] );
7772
7861
  thumb.min = options.min ?? 0;
7773
7862
  thumb.max = options.max ?? 1;
7863
+ pad.appendChild( thumb );
7774
7864
 
7775
7865
  let _updateValue = v => {
7776
7866
  const [ w, h ] = [ pad.offsetWidth, pad.offsetHeight ];
@@ -7778,14 +7868,6 @@ class Pad extends Widget {
7778
7868
  thumb.style.transform = `translate(calc( ${ w * value0to1.x }px - 50% ), calc( ${ h * value0to1.y }px - 50%)`;
7779
7869
  }
7780
7870
 
7781
- doAsync( () => {
7782
- _updateValue( thumb.value )
7783
- } );
7784
-
7785
- pad.appendChild( thumb );
7786
- container.appendChild( pad );
7787
- this.root.appendChild( container );
7788
-
7789
7871
  pad.addEventListener( "mousedown", innerMouseDown );
7790
7872
 
7791
7873
  let that = this;
@@ -7804,6 +7886,7 @@ class Pad extends Widget {
7804
7886
  document.body.classList.add( 'noevents' );
7805
7887
  e.stopImmediatePropagation();
7806
7888
  e.stopPropagation();
7889
+ thumb.classList.add( "active" );
7807
7890
 
7808
7891
  if( options.onPress )
7809
7892
  {
@@ -7835,12 +7918,18 @@ class Pad extends Widget {
7835
7918
  doc.removeEventListener( 'mouseup', innerMouseUp );
7836
7919
  document.body.classList.remove( 'nocursor' );
7837
7920
  document.body.classList.remove( 'noevents' );
7921
+ thumb.classList.remove( "active" );
7838
7922
 
7839
7923
  if( options.onRelease )
7840
7924
  {
7841
7925
  options.onRelease.bind( thumb )( e, thumb );
7842
7926
  }
7843
7927
  }
7928
+
7929
+ doAsync( () => {
7930
+ this.onResize();
7931
+ _updateValue( thumb.value )
7932
+ } );
7844
7933
  }
7845
7934
  }
7846
7935
 
@@ -7870,9 +7959,14 @@ class Progress extends Widget {
7870
7959
  }
7871
7960
  };
7872
7961
 
7873
- var container = document.createElement('div');
7962
+ this.onResize = ( rect ) => {
7963
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
7964
+ container.style.width = `calc( 100% - ${ realNameWidth }px)`;
7965
+ };
7966
+
7967
+ const container = document.createElement('div');
7874
7968
  container.className = "lexprogress";
7875
- container.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
7969
+ this.root.appendChild( container );
7876
7970
 
7877
7971
  // add slider (0-1 if not specified different )
7878
7972
 
@@ -7886,6 +7980,7 @@ class Progress extends Widget {
7886
7980
  progress.high = options.high ?? progress.high;
7887
7981
  progress.optimum = options.optimum ?? progress.optimum;
7888
7982
  progress.value = value;
7983
+ container.appendChild( progress );
7889
7984
 
7890
7985
  const _updateColor = () => {
7891
7986
 
@@ -7903,9 +7998,6 @@ class Progress extends Widget {
7903
7998
  progress.style.background = `color-mix(in srgb, ${backgroundColor} 20%, transparent)`;
7904
7999
  };
7905
8000
 
7906
- container.appendChild( progress );
7907
- this.root.appendChild( container );
7908
-
7909
8001
  if( options.showValue )
7910
8002
  {
7911
8003
  if( document.getElementById('progressvalue-' + name ) )
@@ -7972,6 +8064,8 @@ class Progress extends Widget {
7972
8064
  }
7973
8065
 
7974
8066
  _updateColor();
8067
+
8068
+ doAsync( this.onResize.bind( this ) );
7975
8069
  }
7976
8070
  }
7977
8071
 
@@ -7992,12 +8086,17 @@ class FileInput extends Widget {
7992
8086
  let type = options.type ?? 'text';
7993
8087
  let read = options.read ?? true;
7994
8088
 
8089
+ this.onResize = ( rect ) => {
8090
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
8091
+ input.style.width = `calc( 100% - ${ realNameWidth }px)`;
8092
+ };
8093
+
7995
8094
  // Create hidden input
7996
8095
  let input = document.createElement( 'input' );
7997
8096
  input.className = "lexfileinput";
7998
- input.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + " - 10%)";
7999
8097
  input.type = 'file';
8000
8098
  input.disabled = options.disabled ?? false;
8099
+ this.root.appendChild( input );
8001
8100
 
8002
8101
  if( options.placeholder )
8003
8102
  {
@@ -8030,8 +8129,6 @@ class FileInput extends Widget {
8030
8129
  callback( null );
8031
8130
  });
8032
8131
 
8033
- this.root.appendChild( input );
8034
-
8035
8132
  if( local )
8036
8133
  {
8037
8134
  let settingsDialog = null;
@@ -8052,6 +8149,8 @@ class FileInput extends Widget {
8052
8149
 
8053
8150
  this.root.appendChild( settingButton.root );
8054
8151
  }
8152
+
8153
+ doAsync( this.onResize.bind( this ) );
8055
8154
  }
8056
8155
  }
8057
8156
 
@@ -8292,7 +8391,6 @@ class Counter extends Widget {
8292
8391
  if( e.shiftKey ) mult *= 10;
8293
8392
  this.set( counterText.count + mult, false, e );
8294
8393
  }, { className: "micro", skipInlineCount: true, title: "Plus" });
8295
-
8296
8394
  container.appendChild( addButton.root );
8297
8395
  }
8298
8396
  }
@@ -8315,28 +8413,140 @@ class Table extends Widget {
8315
8413
 
8316
8414
  super( Widget.TABLE, name, null, options );
8317
8415
 
8416
+ this.onResize = ( rect ) => {
8417
+ const realNameWidth = ( this.root.domName?.offsetWidth ?? 0 );
8418
+ container.style.width = `calc( 100% - ${ realNameWidth }px)`;
8419
+ };
8420
+
8318
8421
  const container = document.createElement('div');
8319
8422
  container.className = "lextable";
8320
- container.style.width = "calc( 100% - " + LX.DEFAULT_NAME_WIDTH + ")";
8423
+ this.root.appendChild( container );
8321
8424
 
8322
- const table = document.createElement( 'table' );
8323
- container.appendChild( table );
8425
+ this.centered = options.centered ?? false;
8426
+ if( this.centered === true )
8427
+ {
8428
+ container.classList.add( "centered" );
8429
+ }
8430
+
8431
+ this.filter = options.filter ?? false;
8432
+ this.toggleColumns = options.toggleColumns ?? false;
8433
+ this.customFilters = options.customFilters ?? false;
8434
+ this.activeCustomFilters = {};
8324
8435
 
8325
8436
  data.head = data.head ?? [];
8326
8437
  data.body = data.body ?? [];
8327
- data.orderMap = { };
8328
8438
  data.checkMap = { };
8439
+ data.colVisibilityMap = { };
8440
+ data.head.forEach( (col, index) => { data.colVisibilityMap[ index ] = true; })
8329
8441
 
8330
- function compareFn( idx, order, a, b) {
8442
+ const compareFn = ( idx, order, a, b) => {
8331
8443
  if (a[idx] < b[idx]) return -order;
8332
8444
  else if (a[idx] > b[idx]) return order;
8333
8445
  return 0;
8334
8446
  }
8335
8447
 
8336
- this.refreshTable = () => {
8448
+ const sortFn = ( idx, sign ) => {
8449
+ data.body = data.body.sort( compareFn.bind( this, idx, sign ) );
8450
+ this.refresh();
8451
+ }
8452
+
8453
+ // Append header
8454
+ if( this.filter || this.customFilters || this.toggleColumns )
8455
+ {
8456
+ const headerContainer = LX.makeContainer( [ "100%", "auto" ] );
8457
+
8458
+ if( this.filter )
8459
+ {
8460
+ const filterOptions = LX.deepCopy( options );
8461
+ filterOptions.placeholder = `Filter ${ this.filter }...`;
8462
+ filterOptions.skipWidget = true;
8463
+ filterOptions.trigger = "input";
8464
+ filterOptions.textClass = "outline";
8465
+
8466
+ let filter = new TextInput(null, "", ( v ) => {
8467
+ this._currentFilter = v;
8468
+ this.refresh();
8469
+ }, filterOptions );
8470
+
8471
+ headerContainer.appendChild( filter.root );
8472
+ }
8473
+
8474
+ if( this.customFilters )
8475
+ {
8476
+ const icon = LX.makeIcon( "circle-plus", null, "sm" );
8477
+
8478
+ for( let f of this.customFilters )
8479
+ {
8480
+ const customFilterBtn = new Button(null, icon.innerHTML + f.name, ( v ) => {
8481
+
8482
+ const menuOptions = f.options.map( ( colName, idx ) => {
8483
+ const item = {
8484
+ name: colName,
8485
+ checked: !!this.activeCustomFilters[ colName ],
8486
+ callback: (key, dom, v) => {
8487
+ if( v ) { this.activeCustomFilters[ key ] = f.name; }
8488
+ else {
8489
+ delete this.activeCustomFilters[ key ];
8490
+ }
8491
+ this.refresh();
8492
+ }
8493
+ }
8494
+ return item;
8495
+ } );
8496
+ new DropdownMenu( customFilterBtn.root, menuOptions, { side: "bottom", align: "start" });
8497
+ }, { buttonClass: "dashed" } );
8498
+ headerContainer.appendChild( customFilterBtn.root );
8499
+ }
8500
+
8501
+ // const resetIcon = LX.makeIcon( "xmark", null, "sm" );
8502
+ this._resetCustomFiltersBtn = new Button(null, "resetButton", ( v ) => {
8503
+ this.activeCustomFilters = {};
8504
+ this.refresh();
8505
+ this._resetCustomFiltersBtn.root.classList.add( "hidden" );
8506
+ }, { title: "Reset filters", icon: "fa fa-xmark" } );
8507
+ headerContainer.appendChild( this._resetCustomFiltersBtn.root );
8508
+ this._resetCustomFiltersBtn.root.classList.add( "hidden" );
8509
+ }
8510
+
8511
+ if( this.toggleColumns )
8512
+ {
8513
+ const icon = LX.makeIcon( "sliders" );
8514
+ const toggleColumnsBtn = new Button( "toggleColumnsBtn", icon.innerHTML + "View", (value, e) => {
8515
+ const menuOptions = data.head.map( ( colName, idx ) => {
8516
+ const item = {
8517
+ name: colName,
8518
+ icon: "check",
8519
+ callback: () => {
8520
+ data.colVisibilityMap[ idx ] = !data.colVisibilityMap[ idx ];
8521
+ const cells = table.querySelectorAll(`tr > *:nth-child(${idx + this.rowOffsetCount + 1})`);
8522
+ cells.forEach(cell => {
8523
+ cell.style.display = (cell.style.display === "none") ? "" : "none";
8524
+ });
8525
+ }
8526
+ }
8527
+ if( !data.colVisibilityMap[ idx ] ) delete item.icon;
8528
+ return item;
8529
+ } );
8530
+ new DropdownMenu( e.target, menuOptions, { side: "bottom", align: "end" });
8531
+ }, { hideName: true } );
8532
+ headerContainer.appendChild( toggleColumnsBtn.root );
8533
+ toggleColumnsBtn.root.style.marginLeft = "auto";
8534
+ }
8535
+
8536
+ container.appendChild( headerContainer );
8537
+ }
8538
+
8539
+ const table = document.createElement( 'table' );
8540
+ container.appendChild( table );
8541
+
8542
+ this.refresh = () => {
8543
+
8544
+ this._currentFilter = this._currentFilter ?? "";
8337
8545
 
8338
8546
  table.innerHTML = "";
8339
8547
 
8548
+ this.rowOffsetCount = 0;
8549
+
8340
8550
  // Head
8341
8551
  {
8342
8552
  const head = document.createElement( 'thead' );
@@ -8350,6 +8560,7 @@ class Table extends Widget {
8350
8560
  const th = document.createElement( 'th' );
8351
8561
  th.style.width = "0px";
8352
8562
  hrow.appendChild( th );
8563
+ this.rowOffsetCount++;
8353
8564
  }
8354
8565
 
8355
8566
  if( options.selectable )
@@ -8374,27 +8585,45 @@ class Table extends Widget {
8374
8585
  }
8375
8586
  });
8376
8587
 
8588
+ this.rowOffsetCount++;
8377
8589
  hrow.appendChild( th );
8378
8590
  }
8379
8591
 
8380
8592
  for( const headData of data.head )
8381
8593
  {
8382
8594
  const th = document.createElement( 'th' );
8383
- th.innerHTML = `${ headData } <a class="fa-solid fa-sort"></a>`;
8384
-
8385
- th.querySelector( 'a' ).addEventListener( 'click', () => {
8595
+ th.innerHTML = `<span>${ headData }</span>`;
8596
+ th.querySelector( "span" ).appendChild( LX.makeIcon( "menu-arrows", null, "sm" ) );
8386
8597
 
8387
- if( !data.orderMap[ headData ] )
8388
- {
8389
- data.orderMap[ headData ] = 1;
8390
- }
8598
+ const idx = data.head.indexOf( headData );
8599
+ if( this.centered && this.centered.indexOf( idx ) > -1 )
8600
+ {
8601
+ th.classList.add( "centered" );
8602
+ }
8391
8603
 
8392
- const idx = data.head.indexOf(headData);
8393
- data.body = data.body.sort( compareFn.bind( this, idx,data.orderMap[ headData ] ) );
8394
- data.orderMap[ headData ] = -data.orderMap[ headData ];
8604
+ const menuOptions = [
8605
+ { name: "Asc", icon: "up", callback: sortFn.bind( this, idx, 1 ) },
8606
+ { name: "Desc", icon: "down", callback: sortFn.bind( this, idx, -1 ) }
8607
+ ];
8395
8608
 
8396
- this.refreshTable();
8609
+ if( this.toggleColumns )
8610
+ {
8611
+ menuOptions.push(
8612
+ null,
8613
+ {
8614
+ name: "Hide", icon: "eye-slash", callback: () => {
8615
+ data.colVisibilityMap[ idx ] = false;
8616
+ const cells = table.querySelectorAll(`tr > *:nth-child(${idx + this.rowOffsetCount + 1})`);
8617
+ cells.forEach(cell => {
8618
+ cell.style.display = (cell.style.display === "none") ? "" : "none";
8619
+ });
8620
+ }
8621
+ }
8622
+ );
8623
+ }
8397
8624
 
8625
+ th.addEventListener( 'click', event => {
8626
+ new DropdownMenu( event.target, menuOptions, { side: "bottom", align: "start" });
8398
8627
  });
8399
8628
 
8400
8629
  hrow.appendChild( th );
@@ -8432,15 +8661,23 @@ class Table extends Widget {
8432
8661
  v.style.transition = `none`;
8433
8662
  } );
8434
8663
  flushCss( fromRow );
8435
- rIdx = null;
8436
8664
 
8437
8665
  if( movePending )
8438
8666
  {
8667
+ // Modify inner data first
8668
+ const fromIdx = rIdx - 1;
8669
+ const targetIdx = movePending[ 1 ] - 1;
8670
+ var b = data.body[fromIdx];
8671
+ data.body[fromIdx] = data.body[targetIdx];
8672
+ data.body[targetIdx] = b;
8673
+
8439
8674
  const parent = movePending[ 0 ].parentNode;
8440
8675
  parent.insertChildAtIndex( movePending[ 0 ], movePending[ 1 ] );
8441
8676
  movePending = null;
8442
8677
  }
8443
8678
 
8679
+ rIdx = null;
8680
+
8444
8681
  doAsync( () => {
8445
8682
  Array.from( table.rows ).forEach( v => {
8446
8683
  v.style.transition = `transform 0.2s ease-in`;
@@ -8456,10 +8693,47 @@ class Table extends Widget {
8456
8693
  fromRow.style.transform = `translateY(${fromRow.dY}px)`;
8457
8694
  };
8458
8695
 
8459
-
8460
8696
  for( let r = 0; r < data.body.length; ++r )
8461
8697
  {
8462
8698
  const bodyData = data.body[ r ];
8699
+
8700
+ if( this.filter )
8701
+ {
8702
+ const filterColIndex = data.head.indexOf( this.filter );
8703
+ if( filterColIndex > -1 )
8704
+ {
8705
+ if( !bodyData[ filterColIndex ].toLowerCase().includes( this._currentFilter.toLowerCase() ) )
8706
+ {
8707
+ continue;
8708
+ }
8709
+ }
8710
+ }
8711
+
8712
+ if( Object.keys( this.activeCustomFilters ).length )
8713
+ {
8714
+ let acfMap = {};
8715
+
8716
+ this._resetCustomFiltersBtn.root.classList.remove( "hidden" );
8717
+
8718
+ for( let acfValue in this.activeCustomFilters )
8719
+ {
8720
+ const acfName = this.activeCustomFilters[ acfValue ];
8721
+ acfMap[ acfName ] = acfMap[ acfName ] ?? false;
8722
+
8723
+ const filterColIndex = data.head.indexOf( acfName );
8724
+ if( filterColIndex > -1 )
8725
+ {
8726
+ acfMap[ acfName ] |= ( bodyData[ filterColIndex ] === acfValue );
8727
+ }
8728
+ }
8729
+
8730
+ const show = Object.values( acfMap ).reduce( ( e, acc ) => acc *= e );
8731
+ if( !show )
8732
+ {
8733
+ continue;
8734
+ }
8735
+ }
8736
+
8463
8737
  const row = document.createElement( 'tr' );
8464
8738
  const rowId = LX.getSupportedDOMName( bodyData.join( '-' ) );
8465
8739
  row.setAttribute( "rowId", rowId.substr(0, 16) );
@@ -8534,6 +8808,13 @@ class Table extends Widget {
8534
8808
  {
8535
8809
  const td = document.createElement( 'td' );
8536
8810
  td.innerHTML = `${ rowData }`;
8811
+
8812
+ const idx = bodyData.indexOf( rowData );
8813
+ if( this.centered && this.centered.indexOf( idx ) > -1 )
8814
+ {
8815
+ td.classList.add( "centered" );
8816
+ }
8817
+
8537
8818
  row.appendChild( td );
8538
8819
  }
8539
8820
 
@@ -8563,14 +8844,15 @@ class Table extends Widget {
8563
8844
  {
8564
8845
  button = LX.makeIcon( "more-horizontal", "Menu" );
8565
8846
  button.addEventListener( 'click', function( event ) {
8566
- addContextMenu( null, event, c => {
8567
- if( options.onMenuAction )
8568
- {
8569
- options.onMenuAction( c );
8570
- return;
8571
- }
8572
- console.warn( "Using <Menu action> without action callbacks." );
8573
- } );
8847
+ if( !options.onMenuAction )
8848
+ {
8849
+ return;
8850
+ }
8851
+
8852
+ const menuOptions = options.onMenuAction( r, data );
8853
+ console.assert( menuOptions.length, "Add items to the Menu Action Dropdown!" );
8854
+
8855
+ new DropdownMenu( event.target, menuOptions, { side: "bottom", align: "end" });
8574
8856
  });
8575
8857
  }
8576
8858
  else // custom actions
@@ -8584,7 +8866,7 @@ class Table extends Widget {
8584
8866
  const mustRefresh = action.callback( bodyData, table, e );
8585
8867
  if( mustRefresh )
8586
8868
  {
8587
- this.refreshTable();
8869
+ this.refresh();
8588
8870
  }
8589
8871
  });
8590
8872
  }
@@ -8600,18 +8882,23 @@ class Table extends Widget {
8600
8882
  body.appendChild( row );
8601
8883
  }
8602
8884
  }
8603
- }
8604
8885
 
8605
- this.refreshTable();
8606
-
8607
- const useNameAsLabel = !( options.hideName ?? false );
8608
- if( !useNameAsLabel )
8609
- {
8610
- this.root.className += " noname";
8611
- container.style.width = "100%";
8886
+ for( const v in data.colVisibilityMap )
8887
+ {
8888
+ const idx = parseInt( v );
8889
+ if( !data.colVisibilityMap[ idx ] )
8890
+ {
8891
+ const cells = table.querySelectorAll(`tr > *:nth-child(${idx + this.rowOffsetCount + 1})`);
8892
+ cells.forEach(cell => {
8893
+ cell.style.display = (cell.style.display === "none") ? "" : "none";
8894
+ });
8895
+ }
8896
+ }
8612
8897
  }
8613
8898
 
8614
- this.root.appendChild( container );
8899
+ this.refresh();
8900
+
8901
+ doAsync( this.onResize.bind( this ) );
8615
8902
  }
8616
8903
  }
8617
8904
 
@@ -8984,7 +9271,7 @@ class Panel {
8984
9271
 
8985
9272
  let widget = new TextInput( null, null, null, options )
8986
9273
  const element = widget.root;
8987
- element.className += " lexfilter noname";
9274
+ element.className += " lexfilter";
8988
9275
 
8989
9276
  let input = document.createElement('input');
8990
9277
  input.className = 'lexinput-filter';
@@ -8997,7 +9284,7 @@ class Panel {
8997
9284
  element.appendChild( searchIcon );
8998
9285
  element.appendChild( input );
8999
9286
 
9000
- input.addEventListener("input", (e) => {
9287
+ input.addEventListener("input", e => {
9001
9288
  if( options.callback )
9002
9289
  {
9003
9290
  options.callback( input.value, e );
@@ -9482,6 +9769,7 @@ class Panel {
9482
9769
  * @param {Function} callback Callback function on change
9483
9770
  * @param {Object} options:
9484
9771
  * disabled: Make the widget disabled [false]
9772
+ * label: Toggle label
9485
9773
  * suboptions: Callback to add widgets in case of TRUE value
9486
9774
  * className: Customize colors
9487
9775
  */
@@ -9728,6 +10016,7 @@ class Panel {
9728
10016
  * onMenuAction: Function callback to fill the "menu" context
9729
10017
  * selectable: Each row can be selected
9730
10018
  * sortable: Rows can be sorted by the user manually
10019
+ * centered: Center text within columns. true for all, Array for center selected cols.
9731
10020
  */
9732
10021
 
9733
10022
  addTable( name, data, options = { } ) {
@@ -9785,7 +10074,7 @@ class Branch {
9785
10074
  var branchContent = document.createElement( 'div' );
9786
10075
  branchContent.id = name.replace( /\s/g, '' );
9787
10076
  branchContent.className = "lexbranchcontent";
9788
- root.appendChild(branchContent);
10077
+ root.appendChild( branchContent );
9789
10078
  this.content = branchContent;
9790
10079
 
9791
10080
  this._addBranchSeparator();
@@ -9801,7 +10090,7 @@ class Branch {
9801
10090
  }
9802
10091
 
9803
10092
  this.onclick = function( e ) {
9804
- e.stopPropagation();
10093
+ // e.stopPropagation();
9805
10094
  this.classList.toggle( "closed" );
9806
10095
  this.parentElement.classList.toggle( "closed" );
9807
10096
 
@@ -9933,7 +10222,7 @@ class Branch {
9933
10222
  var size = this.grabber.style.marginLeft;
9934
10223
 
9935
10224
  // Update sizes of widgets inside
9936
- for( var i = 0; i < this.widgets.length; i++ )
10225
+ for( let i = 0; i < this.widgets.length; i++ )
9937
10226
  {
9938
10227
  let widget = this.widgets[ i ];
9939
10228
  const element = widget.root;
@@ -9943,26 +10232,21 @@ class Branch {
9943
10232
  continue;
9944
10233
  }
9945
10234
 
9946
- var name = element.children[ 0 ];
9947
- var value = element.children[ 1 ];
10235
+ let name = element.children[ 0 ];
10236
+ let value = element.children[ 1 ];
9948
10237
 
9949
10238
  name.style.width = size;
9950
- let padding = "0px";
10239
+
9951
10240
  switch( widget.type )
9952
10241
  {
9953
- case Widget.FILE:
9954
- padding = "10%";
9955
- break;
10242
+ case Widget.CUSTOM:
10243
+ case Widget.ARRAY:
10244
+ continue;
9956
10245
  };
9957
10246
 
9958
- value.style.width = "-moz-calc( 100% - " + size + " - " + padding + " )";
9959
- value.style.width = "-webkit-calc( 100% - " + size + " - " + padding + " )";
9960
- value.style.width = "calc( 100% - " + size + " - " + padding + " )";
9961
-
9962
- if( widget.onresize )
9963
- {
9964
- widget.onresize();
9965
- }
10247
+ value.style.width = "-moz-calc( 100% - " + size + " )";
10248
+ value.style.width = "-webkit-calc( 100% - " + size + " )";
10249
+ value.style.width = "calc( 100% - " + size + " )";
9966
10250
  }
9967
10251
  }
9968
10252
  };
@@ -10090,7 +10374,7 @@ class Dialog {
10090
10374
  draggable = options.draggable ?? true,
10091
10375
  modal = options.modal ?? false;
10092
10376
 
10093
- var root = document.createElement('dialog');
10377
+ let root = document.createElement('dialog');
10094
10378
  root.className = "lexdialog " + (options.className ?? "");
10095
10379
  root.id = options.id ?? "dialog" + Dialog._last_id++;
10096
10380
  LX.root.appendChild( root );
@@ -10101,7 +10385,7 @@ class Dialog {
10101
10385
 
10102
10386
  let that = this;
10103
10387
 
10104
- var titleDiv = document.createElement('div');
10388
+ const titleDiv = document.createElement('div');
10105
10389
 
10106
10390
  if( title )
10107
10391
  {
@@ -10166,7 +10450,7 @@ class Dialog {
10166
10450
  }, { icon: "fa-regular fa-window-restore" });
10167
10451
  };
10168
10452
 
10169
- root.appendChild(titleDiv);
10453
+ root.appendChild( titleDiv );
10170
10454
  }
10171
10455
 
10172
10456
  if( options.closable ?? true )
@@ -10365,7 +10649,7 @@ class PocketDialog extends Dialog {
10365
10649
 
10366
10650
  if( float )
10367
10651
  {
10368
- for( var i = 0; i < float.length; i++ )
10652
+ for( let i = 0; i < float.length; i++ )
10369
10653
  {
10370
10654
  const t = float[i];
10371
10655
  switch( t )
@@ -10498,14 +10782,14 @@ class ContextMenu {
10498
10782
  contextmenu.className = "lexcontextmenu";
10499
10783
  c.appendChild( contextmenu );
10500
10784
 
10501
- for( var i = 0; i < o[k].length; ++i )
10785
+ for( let i = 0; i < o[k].length; ++i )
10502
10786
  {
10503
10787
  const subitem = o[ k ][ i ];
10504
10788
  const subkey = Object.keys( subitem )[ 0 ];
10505
10789
  this._createEntry(subitem, subkey, contextmenu, d);
10506
10790
  }
10507
10791
 
10508
- var rect = c.getBoundingClientRect();
10792
+ const rect = c.getBoundingClientRect();
10509
10793
  contextmenu.style.left = rect.width + "px";
10510
10794
  contextmenu.style.marginTop = 3.5 - c.offsetHeight + "px";
10511
10795
 
@@ -10658,10 +10942,10 @@ class ContextMenu {
10658
10942
  _item[ key ].unshift( parent );
10659
10943
  }
10660
10944
 
10661
- for( var child of _item[ key ] )
10945
+ for( let child of _item[ key ] )
10662
10946
  {
10663
10947
  let k = Object.keys( child )[ 0 ];
10664
- for( var i = 0; i < child[ k ].length; ++i )
10948
+ for( let i = 0; i < child[ k ].length; ++i )
10665
10949
  {
10666
10950
  setParent( child );
10667
10951
  }
@@ -10702,7 +10986,7 @@ LX.ContextMenu = ContextMenu;
10702
10986
 
10703
10987
  function addContextMenu( title, event, callback, options )
10704
10988
  {
10705
- var menu = new ContextMenu( event, title, options );
10989
+ const menu = new ContextMenu( event, title, options );
10706
10990
  LX.root.appendChild( menu.root );
10707
10991
 
10708
10992
  if( callback )
@@ -10733,7 +11017,8 @@ class CanvasCurve {
10733
11017
  element.style.minHeight = "20px";
10734
11018
 
10735
11019
  element.bgcolor = options.bgColor || LX.getThemeColor( "global-intense-background" );
10736
- element.pointscolor = options.pointsColor || LX.getThemeColor( "global-selected-light" );
11020
+ element.pointscolor = options.pointsColor || LX.getThemeColor( "global-selected" );
11021
+ element.activepointscolor = options.activePointsColor || LX.getThemeColor( "global-selected-light" );
10737
11022
  element.linecolor = options.lineColor || "#555";
10738
11023
  element.value = value || [];
10739
11024
  element.xrange = options.xrange || [ 0, 1 ]; // min, max
@@ -10749,7 +11034,8 @@ class CanvasCurve {
10749
11034
 
10750
11035
  LX.addSignal( "@on_new_color_scheme", (el, value) => {
10751
11036
  element.bgcolor = options.bgColor || LX.getThemeColor( "global-intense-background" );
10752
- element.pointscolor = options.pointsColor || LX.getThemeColor( "global-selected-light" );
11037
+ element.pointscolor = options.pointsColor || LX.getThemeColor( "global-selected" );
11038
+ element.activepointscolor = options.activePointsColor || LX.getThemeColor( "global-selected-light" );
10753
11039
  this.redraw();
10754
11040
  } );
10755
11041
 
@@ -10770,11 +11056,11 @@ class CanvasCurve {
10770
11056
  return element.defaulty;
10771
11057
  }
10772
11058
 
10773
- var last = [ element.xrange[ 0 ], element.defaulty ];
10774
- var f = 0;
10775
- for( var i = 0; i < element.value.length; i += 1 )
11059
+ let last = [ element.xrange[ 0 ], element.defaulty ];
11060
+ let f = 0;
11061
+ for( let i = 0; i < element.value.length; i += 1 )
10776
11062
  {
10777
- var v = element.value[ i ];
11063
+ let v = element.value[ i ];
10778
11064
  if( x == v[ 0 ] ) return v[ 1 ];
10779
11065
  if( x < v[ 0 ] )
10780
11066
  {
@@ -10792,9 +11078,9 @@ class CanvasCurve {
10792
11078
 
10793
11079
  element.resample = function( samples ) {
10794
11080
 
10795
- var r = [];
10796
- var dx = (element.xrange[1] - element.xrange[ 0 ]) / samples;
10797
- for( var i = element.xrange[0]; i <= element.xrange[1]; i += dx )
11081
+ let r = [];
11082
+ let dx = (element.xrange[1] - element.xrange[ 0 ]) / samples;
11083
+ for( let i = element.xrange[0]; i <= element.xrange[1]; i += dx )
10798
11084
  {
10799
11085
  r.push( element.getValueAt(i) );
10800
11086
  }
@@ -10803,9 +11089,9 @@ class CanvasCurve {
10803
11089
 
10804
11090
  element.addValue = function(v) {
10805
11091
 
10806
- for( var i = 0; i < element.value; i++ )
11092
+ for( let i = 0; i < element.value; i++ )
10807
11093
  {
10808
- var value = element.value[i];
11094
+ let value = element.value[i];
10809
11095
  if(value[0] < v[0]) continue;
10810
11096
  element.value.splice(i,0,v);
10811
11097
  redraw();
@@ -10828,7 +11114,7 @@ class CanvasCurve {
10828
11114
  (v[1] * element.yrange[1] / canvas.height + element.yrange[0])];
10829
11115
  }
10830
11116
 
10831
- var selected = -1;
11117
+ let selected = -1;
10832
11118
 
10833
11119
  element.redraw = function( o = {} ) {
10834
11120
 
@@ -10890,7 +11176,7 @@ class CanvasCurve {
10890
11176
  var value = element.value[ i ];
10891
11177
  pos = convert( value );
10892
11178
  if( selected == i )
10893
- ctx.fillStyle = "white";
11179
+ ctx.fillStyle = element.activepointscolor;
10894
11180
  else
10895
11181
  ctx.fillStyle = element.pointscolor;
10896
11182
  ctx.beginPath();
@@ -12078,7 +12364,7 @@ class AssetView {
12078
12364
  const hasImage = ['png', 'jpg'].indexOf( getExtension( file.src ) ) > -1 || is_base_64;
12079
12365
  if( hasImage )
12080
12366
  {
12081
- this.previewPanel.addImage( file.src, { style: { width: "100%" } } );
12367
+ this.previewPanel.addImage( null, file.src, { style: { width: "100%" } } );
12082
12368
  }
12083
12369
  }
12084
12370
 
@@ -12522,69 +12808,6 @@ Element.prototype.getParentArea = function() {
12522
12808
  }
12523
12809
  }
12524
12810
 
12525
- LX.ICONS = {
12526
- "align-center": [448, 512, [], "", "M352 64c0-17.7-14.3-32-32-32L128 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32zm96 128c0-17.7-14.3-32-32-32L32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM0 448c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416c-17.7 0-32 14.3-32 32zM352 320c0-17.7-14.3-32-32-32l-192 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32z"],
12527
- "align-justify": [448, 512, [], "", "M448 64c0-17.7-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l384 0c17.7 0 32-14.3 32-32zm0 256c0-17.7-14.3-32-32-32L32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM0 192c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160c-17.7 0-32 14.3-32 32zM448 448c0-17.7-14.3-32-32-32L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32z"],
12528
- "align-left": [448, 512, [], "", "M288 64c0 17.7-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l224 0c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32L32 352c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 224c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z"],
12529
- "align-right": [448, 512, [], "", "M448 64c0 17.7-14.3 32-32 32L192 96c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 224c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z"],
12530
- "bell": [448, 512, [], "", "M224 0c-17.7 0-32 14.3-32 32l0 19.2C119 66 64 130.6 64 208l0 25.4c0 45.4-15.5 89.5-43.8 124.9L5.3 377c-5.8 7.2-6.9 17.1-2.9 25.4S14.8 416 24 416l400 0c9.2 0 17.6-5.3 21.6-13.6s2.9-18.2-2.9-25.4l-14.9-18.6C399.5 322.9 384 278.8 384 233.4l0-25.4c0-77.4-55-142-128-156.8L256 32c0-17.7-14.3-32-32-32zm0 96c61.9 0 112 50.1 112 112l0 25.4c0 47.9 13.9 94.6 39.7 134.6L72.3 368C98.1 328 112 281.3 112 233.4l0-25.4c0-61.9 50.1-112 112-112zm64 352l-64 0-64 0c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z"],
12531
- "display": [576, 512, [], "", "M64 0C28.7 0 0 28.7 0 64L0 352c0 35.3 28.7 64 64 64l176 0-10.7 32L160 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-69.3 0L336 416l176 0c35.3 0 64-28.7 64-64l0-288c0-35.3-28.7-64-64-64L64 0zM512 64l0 288L64 352 64 64l448 0z"],
12532
- "mobile-screen": [384, 512, [], "", "M16 64C16 28.7 44.7 0 80 0L304 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L80 512c-35.3 0-64-28.7-64-64L16 64zM144 448c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16zM304 64L80 64l0 320 224 0 0-320z"],
12533
- "print": [512, 512, [], "", "M128 0C92.7 0 64 28.7 64 64l0 96 64 0 0-96 226.7 0L384 93.3l0 66.7 64 0 0-66.7c0-17-6.7-33.3-18.7-45.3L400 18.7C388 6.7 371.7 0 354.7 0L128 0zM384 352l0 32 0 64-256 0 0-64 0-16 0-16 256 0zm64 32l32 0c17.7 0 32-14.3 32-32l0-96c0-35.3-28.7-64-64-64L64 192c-35.3 0-64 28.7-64 64l0 96c0 17.7 14.3 32 32 32l32 0 0 64c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-64zM432 248a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"],
12534
- "bookmark": [384, 512, [], "", "M0 48C0 21.5 21.5 0 48 0l0 48 0 393.4 130.1-92.9c8.3-6 19.6-6 27.9 0L336 441.4 336 48 48 48 48 0 336 0c26.5 0 48 21.5 48 48l0 440c0 9-5 17.2-13 21.3s-17.6 3.4-24.9-1.8L192 397.5 37.9 507.5c-7.3 5.2-16.9 5.9-24.9 1.8S0 497 0 488L0 48z"],
12535
- "calendar": [448, 512, [], "", "M304 128a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM49.3 464l349.5 0c-8.9-63.3-63.3-112-129-112l-91.4 0c-65.7 0-120.1 48.7-129 112zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3z"],
12536
- "chart": [448, 512, [], "", "M160 80c0-26.5 21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 352c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-352zM0 272c0-26.5 21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 160c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48L0 272zM368 96l32 0c26.5 0 48 21.5 48 48l0 288c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-288c0-26.5 21.5-48 48-48z"],
12537
- "check": [448, 512, [], "", "M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"],
12538
- "clone": [512, 512, [], "", "M64 464l224 0c8.8 0 16-7.2 16-16l0-64 48 0 0 64c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64l64 0 0 48-64 0c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16zM224 304l224 0c8.8 0 16-7.2 16-16l0-224c0-8.8-7.2-16-16-16L224 48c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16zm-64-16l0-224c0-35.3 28.7-64 64-64L448 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64l-224 0c-35.3 0-64-28.7-64-64z"],
12539
- "copy": [448, 512, [], "", "M384 336l-192 0c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l140.1 0L400 115.9 400 320c0 8.8-7.2 16-16 16zM192 384l192 0c35.3 0 64-28.7 64-64l0-204.1c0-12.7-5.1-24.9-14.1-33.9L366.1 14.1c-9-9-21.2-14.1-33.9-14.1L192 0c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64zM64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-32-48 0 0 32c0 8.8-7.2 16-16 16L64 464c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l32 0 0-48-32 0z"],
12540
- "paste": [512, 512, [], "", "M104.6 48L64 48C28.7 48 0 76.7 0 112L0 384c0 35.3 28.7 64 64 64l96 0 0-48-96 0c-8.8 0-16-7.2-16-16l0-272c0-8.8 7.2-16 16-16l16 0c0 17.7 14.3 32 32 32l72.4 0C202 108.4 227.6 96 256 96l62 0c-7.1-27.6-32.2-48-62-48l-40.6 0C211.6 20.9 188.2 0 160 0s-51.6 20.9-55.4 48zM144 56a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM448 464l-192 0c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l140.1 0L464 243.9 464 448c0 8.8-7.2 16-16 16zM256 512l192 0c35.3 0 64-28.7 64-64l0-204.1c0-12.7-5.1-24.9-14.1-33.9l-67.9-67.9c-9-9-21.2-14.1-33.9-14.1L256 128c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64z"],
12541
- "edit": [512, 512, [], "", "M441 58.9L453.1 71c9.4 9.4 9.4 24.6 0 33.9L424 134.1 377.9 88 407 58.9c9.4-9.4 24.6-9.4 33.9 0zM209.8 256.2L344 121.9 390.1 168 255.8 302.2c-2.9 2.9-6.5 5-10.4 6.1l-58.5 16.7 16.7-58.5c1.1-3.9 3.2-7.5 6.1-10.4zM373.1 25L175.8 222.2c-8.7 8.7-15 19.4-18.3 31.1l-28.6 100c-2.4 8.4-.1 17.4 6.1 23.6s15.2 8.5 23.6 6.1l100-28.6c11.8-3.4 22.5-9.7 31.1-18.3L487 138.9c28.1-28.1 28.1-73.7 0-101.8L474.9 25C446.8-3.1 401.2-3.1 373.1 25zM88 64C39.4 64 0 103.4 0 152L0 424c0 48.6 39.4 88 88 88l272 0c48.6 0 88-39.4 88-88l0-112c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 112c0 22.1-17.9 40-40 40L88 464c-22.1 0-40-17.9-40-40l0-272c0-22.1 17.9-40 40-40l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L88 64z"],
12542
- "envelope": [512, 512, [], "", "M64 112c-8.8 0-16 7.2-16 16l0 22.1L220.5 291.7c20.7 17 50.4 17 71.1 0L464 150.1l0-22.1c0-8.8-7.2-16-16-16L64 112zM48 212.2L48 384c0 8.8 7.2 16 16 16l384 0c8.8 0 16-7.2 16-16l0-171.8L322 328.8c-38.4 31.5-93.7 31.5-132 0L48 212.2zM0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128z"],
12543
- "envelope-open": [512, 512, [], "", "M255.4 48.2c.2-.1 .4-.2 .6-.2s.4 .1 .6 .2L460.6 194c2.1 1.5 3.4 3.9 3.4 6.5l0 13.6L291.5 355.7c-20.7 17-50.4 17-71.1 0L48 214.1l0-13.6c0-2.6 1.2-5 3.4-6.5L255.4 48.2zM48 276.2L190 392.8c38.4 31.5 93.7 31.5 132 0L464 276.2 464 456c0 4.4-3.6 8-8 8L56 464c-4.4 0-8-3.6-8-8l0-179.8zM256 0c-10.2 0-20.2 3.2-28.5 9.1L23.5 154.9C8.7 165.4 0 182.4 0 200.5L0 456c0 30.9 25.1 56 56 56l400 0c30.9 0 56-25.1 56-56l0-255.5c0-18.1-8.7-35.1-23.4-45.6L284.5 9.1C276.2 3.2 266.2 0 256 0z"],
12544
- "map": [576, 512, [], "", "M565.6 36.2C572.1 40.7 576 48.1 576 56l0 336c0 10-6.2 18.9-15.5 22.4l-168 64c-5.2 2-10.9 2.1-16.1 .3L192.5 417.5l-160 61c-7.4 2.8-15.7 1.8-22.2-2.7S0 463.9 0 456L0 120c0-10 6.1-18.9 15.5-22.4l168-64c5.2-2 10.9-2.1 16.1-.3L383.5 94.5l160-61c7.4-2.8 15.7-1.8 22.2 2.7zM48 136.5l0 284.6 120-45.7 0-284.6L48 136.5zM360 422.7l0-285.4-144-48 0 285.4 144 48zm48-1.5l120-45.7 0-284.6L408 136.5l0 284.6z"],
12545
- "file": [384, 512, [], "", "M320 464c8.8 0 16-7.2 16-16l0-288-80 0c-17.7 0-32-14.3-32-32l0-80L64 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16l256 0zM0 64C0 28.7 28.7 0 64 0L229.5 0c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64z"],
12546
- "file-code": [384, 512, [], "", "M64 464c-8.8 0-16-7.2-16-16L48 64c0-8.8 7.2-16 16-16l160 0 0 80c0 17.7 14.3 32 32 32l80 0 0 288c0 8.8-7.2 16-16 16L64 464zM64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-293.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0L64 0zm97 289c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L79 303c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-31-31 31-31zM257 255c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9l-48-48z"],
12547
- "file-zip": [384, 512, [], "", "M64 464c-8.8 0-16-7.2-16-16L48 64c0-8.8 7.2-16 16-16l48 0c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l48 0 0 80c0 17.7 14.3 32 32 32l80 0 0 288c0 8.8-7.2 16-16 16L64 464zM64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-293.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0L64 0zm48 112c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm-6.3 71.8L82.1 335.9c-1.4 5.4-2.1 10.9-2.1 16.4c0 35.2 28.8 63.7 64 63.7s64-28.5 64-63.7c0-5.5-.7-11.1-2.1-16.4l-23.5-88.2c-3.7-14-16.4-23.8-30.9-23.8l-14.8 0c-14.5 0-27.2 9.7-30.9 23.8zM128 336l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z"],
12548
- "floppy-disk": [448, 512, ["save"], "", "M48 96l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-245.5c0-4.2-1.7-8.3-4.7-11.3l33.9-33.9c12 12 18.7 28.3 18.7 45.3L448 416c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l245.5 0c17 0 33.3 6.7 45.3 18.7l74.5 74.5-33.9 33.9L320.8 84.7c-.3-.3-.5-.5-.8-.8L320 184c0 13.3-10.7 24-24 24l-192 0c-13.3 0-24-10.7-24-24L80 80 64 80c-8.8 0-16 7.2-16 16zm80-16l0 80 144 0 0-80L128 80zm32 240a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z"],
12549
- "save": "floppy-disk",
12550
- "fingerprint": [512, 512, [], "", "M48 256C48 141.1 141.1 48 256 48c63.1 0 119.6 28.1 157.8 72.5c8.6 10.1 23.8 11.2 33.8 2.6s11.2-23.8 2.6-33.8C403.3 34.6 333.7 0 256 0C114.6 0 0 114.6 0 256l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40zm458.5-52.9c-2.7-13-15.5-21.3-28.4-18.5s-21.3 15.5-18.5 28.4c2.9 13.9 4.5 28.3 4.5 43.1l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40c0-18.1-1.9-35.8-5.5-52.9zM256 80c-19 0-37.4 3-54.5 8.6c-15.2 5-18.7 23.7-8.3 35.9c7.1 8.3 18.8 10.8 29.4 7.9c10.6-2.9 21.8-4.4 33.4-4.4c70.7 0 128 57.3 128 128l0 24.9c0 25.2-1.5 50.3-4.4 75.3c-1.7 14.6 9.4 27.8 24.2 27.8c11.8 0 21.9-8.6 23.3-20.3c3.3-27.4 5-55 5-82.7l0-24.9c0-97.2-78.8-176-176-176zM150.7 148.7c-9.1-10.6-25.3-11.4-33.9-.4C93.7 178 80 215.4 80 256l0 24.9c0 24.2-2.6 48.4-7.8 71.9C68.8 368.4 80.1 384 96.1 384c10.5 0 19.9-7 22.2-17.3c6.4-28.1 9.7-56.8 9.7-85.8l0-24.9c0-27.2 8.5-52.4 22.9-73.1c7.2-10.4 8-24.6-.2-34.2zM256 160c-53 0-96 43-96 96l0 24.9c0 35.9-4.6 71.5-13.8 106.1c-3.8 14.3 6.7 29 21.5 29c9.5 0 17.9-6.2 20.4-15.4c10.5-39 15.9-79.2 15.9-119.7l0-24.9c0-28.7 23.3-52 52-52s52 23.3 52 52l0 24.9c0 36.3-3.5 72.4-10.4 107.9c-2.7 13.9 7.7 27.2 21.8 27.2c10.2 0 19-7 21-17c7.7-38.8 11.6-78.3 11.6-118.1l0-24.9c0-53-43-96-96-96zm24 96c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24.9c0 59.9-11 119.3-32.5 175.2l-5.9 15.3c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8l5.9-15.3C267.9 411.9 280 346.7 280 280.9l0-24.9z"],
12551
- "eye": [576, 512, [], "", "M288 80c-65.2 0-118.8 29.6-159.9 67.7C89.6 183.5 63 226 49.4 256c13.6 30 40.2 72.5 78.6 108.3C169.2 402.4 222.8 432 288 432s118.8-29.6 159.9-67.7C486.4 328.5 513 286 526.6 256c-13.6-30-40.2-72.5-78.6-108.3C406.8 109.6 353.2 80 288 80zM95.4 112.6C142.5 68.8 207.2 32 288 32s145.5 36.8 192.6 80.6c46.8 43.5 78.1 95.4 93 131.1c3.3 7.9 3.3 16.7 0 24.6c-14.9 35.7-46.2 87.7-93 131.1C433.5 443.2 368.8 480 288 480s-145.5-36.8-192.6-80.6C48.6 356 17.3 304 2.5 268.3c-3.3-7.9-3.3-16.7 0-24.6C17.3 208 48.6 156 95.4 112.6zM288 336c44.2 0 80-35.8 80-80s-35.8-80-80-80c-.7 0-1.3 0-2 0c1.3 5.1 2 10.5 2 16c0 35.3-28.7 64-64 64c-5.5 0-10.9-.7-16-2c0 .7 0 1.3 0 2c0 44.2 35.8 80 80 80zm0-208a128 128 0 1 1 0 256 128 128 0 1 1 0-256z"],
12552
- "eye-slash": [640, 512, [], "", "M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zm151 118.3C226 97.7 269.5 80 320 80c65.2 0 118.8 29.6 159.9 67.7C518.4 183.5 545 226 558.6 256c-12.6 28-36.6 66.8-70.9 100.9l-53.8-42.2c9.1-17.6 14.2-37.5 14.2-58.7c0-70.7-57.3-128-128-128c-32.2 0-61.7 11.9-84.2 31.5l-46.1-36.1zM394.9 284.2l-81.5-63.9c4.2-8.5 6.6-18.2 6.6-28.3c0-5.5-.7-10.9-2-16c.7 0 1.3 0 2 0c44.2 0 80 35.8 80 80c0 9.9-1.8 19.4-5.1 28.2zm9.4 130.3C378.8 425.4 350.7 432 320 432c-65.2 0-118.8-29.6-159.9-67.7C121.6 328.5 95 286 81.4 256c8.3-18.4 21.5-41.5 39.4-64.8L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5l-41.9-33zM192 256c0 70.7 57.3 128 128 128c13.3 0 26.1-2 38.2-5.8L302 334c-23.5-5.4-43.1-21.2-53.7-42.3l-56.1-44.2c-.2 2.8-.3 5.6-.3 8.5z"],
12553
- "folder": [512, 512, [], "", "M0 96C0 60.7 28.7 32 64 32l132.1 0c19.1 0 37.4 7.6 50.9 21.1L289.9 96 448 96c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l384 0c8.8 0 16-7.2 16-16l0-256c0-8.8-7.2-16-16-16l-161.4 0c-10.6 0-20.8-4.2-28.3-11.7L213.1 87c-4.5-4.5-10.6-7-17-7L64 80z"],
12554
- "folder-closed": [512, 512, [], "e185", "M251.7 127.6s0 0 0 0c10.5 10.5 24.7 16.4 39.6 16.4L448 144c8.8 0 16 7.2 16 16l0 32L48 192l0-96c0-8.8 7.2-16 16-16l133.5 0c4.2 0 8.3 1.7 11.3 4.7l33.9-33.9L208.8 84.7l42.9 42.9zM48 240l416 0 0 176c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16l0-176zM285.7 93.7L242.7 50.7c-12-12-28.3-18.7-45.3-18.7L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L291.3 96c-2.1 0-4.2-.8-5.7-2.3z"],
12555
- "folder-open": [576, 512, [], "", "M384 480l48 0c11.4 0 21.9-6 27.6-15.9l112-192c5.8-9.9 5.8-22.1 .1-32.1S555.5 224 544 224l-400 0c-11.4 0-21.9 6-27.6 15.9L48 357.1 48 96c0-8.8 7.2-16 16-16l117.5 0c4.2 0 8.3 1.7 11.3 4.7l26.5 26.5c21 21 49.5 32.8 79.2 32.8L416 144c8.8 0 16 7.2 16 16l0 32 48 0 0-32c0-35.3-28.7-64-64-64L298.5 96c-17 0-33.3-6.7-45.3-18.7L226.7 50.7c-12-12-28.3-18.7-45.3-18.7L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l23.7 0L384 480z"],
12556
- "github": [496, 512, [], "", "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"],
12557
- "grip-vertical": [320, 512, [], "", "M40 352l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zm192 0l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 320c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 192l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 160c-22.1 0-40-17.9-40-40L0 72C0 49.9 17.9 32 40 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40z"],
12558
- "image": [512, 512, [], "", "M448 80c8.8 0 16 7.2 16 16l0 319.8-5-6.5-136-176c-4.5-5.9-11.6-9.3-19-9.3s-14.4 3.4-19 9.3L202 340.7l-30.5-42.7C167 291.7 159.8 288 152 288s-15 3.7-19.5 10.1l-80 112L48 416.3l0-.3L48 96c0-8.8 7.2-16 16-16l384 0zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm80 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"],
12559
- "images": [576, 512, [], "", "M160 80l352 0c8.8 0 16 7.2 16 16l0 224c0 8.8-7.2 16-16 16l-21.2 0L388.1 178.9c-4.4-6.8-12-10.9-20.1-10.9s-15.7 4.1-20.1 10.9l-52.2 79.8-12.4-16.9c-4.5-6.2-11.7-9.8-19.4-9.8s-14.8 3.6-19.4 9.8L175.6 336 160 336c-8.8 0-16-7.2-16-16l0-224c0-8.8 7.2-16 16-16zM96 96l0 224c0 35.3 28.7 64 64 64l352 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L160 32c-35.3 0-64 28.7-64 64zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120L0 344c0 75.1 60.9 136 136 136l320 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-320 0c-48.6 0-88-39.4-88-88l0-224zm208 24a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"],
12560
- "left": [320, 512, [], "", "M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"],
12561
- "right": [320, 512, [], "", "M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z"],
12562
- "up": [448, 512, [], "", "M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z"],
12563
- "down": [448, 512, [], "", "M201.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 306.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z"],
12564
- "log-in": [512, 512, [], "", "M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z"],
12565
- "log-out": [512, 512, [], "", "M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 192 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128zM160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 32C43 32 0 75 0 128L0 384c0 53 43 96 96 96l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l64 0z"],
12566
- "menu-arrows": [512, 512, [], "", "M352 144l96 112-96 112M160 144L64 256l96 112", "transform=rotate(90)", "fill=none stroke=currentColor stroke-width=60 stroke-linejoin=round stroke-linecap=round"],
12567
- "more": [128, 512, [], "", "M64 360a56 56 0 1 0 0 112 56 56 0 1 0 0-112zm0-160a56 56 0 1 0 0 112 56 56 0 1 0 0-112zM120 96A56 56 0 1 0 8 96a56 56 0 1 0 112 0z"],
12568
- "minus": [448, 512, [], "", "M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z"],
12569
- "more-horizontal": [448, 512, [], "", "M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z"],
12570
- "plus": [448, 512, [], "", "M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 144L48 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l144 0 0 144c0 17.7 14.3 32 32 32s32-14.3 32-32l0-144 144 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-144 0 0-144z"],
12571
- "search": [512, 512, [], "", "M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z"],
12572
- "sidebar": [512, 512, [], "", "M64 64h384a32 32 0 0 1 32 32v320a32 32 0 0 1-32 32H64a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm128 0v384", null, "fill=none stroke=currentColor stroke-width=50 stroke-linejoin=round stroke-linecap=round"],
12573
- "shuffle": [512, 512, [], "", "M403.8 34.4c12-5 25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-32-32 0c-10.1 0-19.6 4.7-25.6 12.8L284 229.3 244 176l31.2-41.6C293.3 110.2 321.8 96 352 96l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6zM164 282.7L204 336l-31.2 41.6C154.7 401.8 126.2 416 96 416l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c10.1 0 19.6-4.7 25.6-12.8L164 282.7zm274.6 188c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-32-32 0c-30.2 0-58.7-14.2-76.8-38.4L121.6 172.8c-6-8.1-15.5-12.8-25.6-12.8l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c30.2 0 58.7 14.2 76.8 38.4L326.4 339.2c6 8.1 15.5 12.8 25.6 12.8l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64z"],
12574
- "credit-card": [576, 512, [], "", "M512 80c8.8 0 16 7.2 16 16l0 32L48 128l0-32c0-8.8 7.2-16 16-16l448 0zm16 144l0 192c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16l0-192 480 0zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm56 304c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0zm128 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-112 0z"],
12575
- "trash-can": [448, 512, [], "", "M170.5 51.6L151.5 80l145 0-19-28.4c-1.5-2.2-4-3.6-6.7-3.6l-93.7 0c-2.7 0-5.2 1.3-6.7 3.6zm147-26.6L354.2 80 368 80l48 0 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 304c0 44.2-35.8 80-80 80l-224 0c-44.2 0-80-35.8-80-80l0-304-8 0c-13.3 0-24-10.7-24-24S10.7 80 24 80l8 0 48 0 13.8 0 36.7-55.1C140.9 9.4 158.4 0 177.1 0l93.7 0c18.7 0 36.2 9.4 46.6 24.9zM80 128l0 304c0 17.7 14.3 32 32 32l224 0c17.7 0 32-14.3 32-32l0-304L80 128zm80 64l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208c0-8.8 7.2-16 16-16s16 7.2 16 16z"],
12576
- "user": [448, 512, [], "", "M304 128a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM49.3 464l349.5 0c-8.9-63.3-63.3-112-129-112l-91.4 0c-65.7 0-120.1 48.7-129 112zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3z"],
12577
- "closed-captioning": [576, 512, ["cc"], "", "M512 80c8.8 0 16 7.2 16 16l0 320c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16L48 96c0-8.8 7.2-16 16-16l448 0zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z"],
12578
- "cc": "closed-captioning",
12579
- "heart": [512, 512, [], "", "M225.8 468.2l-2.5-2.3L48.1 303.2C17.4 274.7 0 234.7 0 192.8l0-3.3c0-70.4 50-130.8 119.2-144C158.6 37.9 198.9 47 231 69.6c9 6.4 17.4 13.8 25 22.3c4.2-4.8 8.7-9.2 13.5-13.3c3.7-3.2 7.5-6.2 11.5-9c0 0 0 0 0 0C313.1 47 353.4 37.9 392.8 45.4C462 58.6 512 119.1 512 189.5l0 3.3c0 41.9-17.4 81.9-48.1 110.4L288.7 465.9l-2.5 2.3c-8.2 7.6-19 11.9-30.2 11.9s-22-4.2-30.2-11.9zM239.1 145c-.4-.3-.7-.7-1-1.1l-17.8-20-.1-.1s0 0 0 0c-23.1-25.9-58-37.7-92-31.2C81.6 101.5 48 142.1 48 189.5l0 3.3c0 28.5 11.9 55.8 32.8 75.2L256 430.7 431.2 268c20.9-19.4 32.8-46.7 32.8-75.2l0-3.3c0-47.3-33.6-88-80.1-96.9c-34-6.5-69 5.4-92 31.2c0 0 0 0-.1 .1s0 0-.1 .1l-17.8 20c-.3 .4-.7 .7-1 1.1c-4.5 4.5-10.6 7-16.9 7s-12.4-2.5-16.9-7z"],
12580
- "x-mark": [384, 512, [], "", "M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z"],
12581
- "star": [576, 512, [], "", "M287.9 0c9.2 0 17.6 5.2 21.6 13.5l68.6 141.3 153.2 22.6c9 1.3 16.5 7.6 19.3 16.3s.5 18.1-5.9 24.5L433.6 328.4l26.2 155.6c1.5 9-2.2 18.1-9.7 23.5s-17.3 6-25.3 1.7l-137-73.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.2c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5C270.4 5.2 278.7 0 287.9 0zm0 79L235.4 187.2c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l105.2-56.2c7.1-3.8 15.6-3.8 22.6 0l105.2 56.2L384.2 324.1c-1.3-7.7 1.2-15.5 6.8-21l85.9-85.1L358.6 200.5c-7.8-1.2-14.6-6.1-18.1-13.3L287.9 79z"],
12582
- "square-js": [448, 512, [], "", "M448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM180.9 444.9c-33.7 0-53.2-17.4-63.2-38.5L152 385.7c6.6 11.7 12.6 21.6 27.1 21.6c13.8 0 22.6-5.4 22.6-26.5V237.7h42.1V381.4c0 43.6-25.6 63.5-62.9 63.5zm85.8-43L301 382.1c9 14.7 20.8 25.6 41.5 25.6c17.4 0 28.6-8.7 28.6-20.8c0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5c0-31.6 24.1-55.6 61.6-55.6c26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18c-12.3 0-20.1 7.8-20.1 18c0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2c0 37.8-29.8 58.6-69.7 58.6c-39.1 0-64.4-18.6-76.7-43z"],
12583
- "python": [448, 512, [], "", "M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z"],
12584
- "microsoft": [448, 512, [], "", "M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"],
12585
- "apple": [384, 512, [], "f179", "M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z"],
12586
- }
12587
-
12588
12811
  LX.UTILS = {
12589
12812
  getTime() { return new Date().getTime() },
12590
12813
  compareThreshold( v, p, n, t ) { return Math.abs(v - p) >= t || Math.abs(v - n) >= t },
@@ -12659,4 +12882,130 @@ LX.UTILS = {
12659
12882
  }
12660
12883
  };
12661
12884
 
12885
+ LX.ICONS = {
12886
+ "align-center": [448, 512, [], "solid", "M352 64c0-17.7-14.3-32-32-32L128 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32zm96 128c0-17.7-14.3-32-32-32L32 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM0 448c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 416c-17.7 0-32 14.3-32 32zM352 320c0-17.7-14.3-32-32-32l-192 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l192 0c17.7 0 32-14.3 32-32z"],
12887
+ "align-justify": [448, 512, [], "solid", "M448 64c0-17.7-14.3-32-32-32L32 32C14.3 32 0 46.3 0 64S14.3 96 32 96l384 0c17.7 0 32-14.3 32-32zm0 256c0-17.7-14.3-32-32-32L32 288c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32zM0 192c0 17.7 14.3 32 32 32l384 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 160c-17.7 0-32 14.3-32 32zM448 448c0-17.7-14.3-32-32-32L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l384 0c17.7 0 32-14.3 32-32z"],
12888
+ "align-left": [448, 512, [], "solid", "M288 64c0 17.7-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l224 0c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32L32 352c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 224c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z"],
12889
+ "align-right": [448, 512, [], "solid", "M448 64c0 17.7-14.3 32-32 32L192 96c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zm0 256c0 17.7-14.3 32-32 32l-224 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l224 0c17.7 0 32 14.3 32 32zM0 192c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 224c-17.7 0-32-14.3-32-32zM448 448c0 17.7-14.3 32-32 32L32 480c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z"],
12890
+ "bell": [448, 512, [], "regular", "M224 0c-17.7 0-32 14.3-32 32l0 19.2C119 66 64 130.6 64 208l0 25.4c0 45.4-15.5 89.5-43.8 124.9L5.3 377c-5.8 7.2-6.9 17.1-2.9 25.4S14.8 416 24 416l400 0c9.2 0 17.6-5.3 21.6-13.6s2.9-18.2-2.9-25.4l-14.9-18.6C399.5 322.9 384 278.8 384 233.4l0-25.4c0-77.4-55-142-128-156.8L256 32c0-17.7-14.3-32-32-32zm0 96c61.9 0 112 50.1 112 112l0 25.4c0 47.9 13.9 94.6 39.7 134.6L72.3 368C98.1 328 112 281.3 112 233.4l0-25.4c0-61.9 50.1-112 112-112zm64 352l-64 0-64 0c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z"],
12891
+ "bell-slash": [640, 512, [], "regular", "M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L542.6 400c2.7-7.8 1.3-16.5-3.9-23l-14.9-18.6C495.5 322.9 480 278.8 480 233.4l0-33.4c0-75.8-55.5-138.6-128-150.1L352 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 17.9c-43.9 7-81.5 32.7-104.4 68.7L38.8 5.1zM221.7 148.4C239.6 117.1 273.3 96 312 96l8 0 8 0c57.4 0 104 46.6 104 104l0 33.4c0 32.7 6.4 64.8 18.7 94.5L221.7 148.4zM406.2 416l-60.9-48-176.9 0c21.2-32.8 34.4-70.3 38.4-109.1L160 222.1l0 11.4c0 45.4-15.5 89.5-43.8 124.9L101.3 377c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l286.2 0zM384 448l-64 0-64 0c0 17 6.7 33.3 18.7 45.3s28.3 18.7 45.3 18.7s33.3-6.7 45.3-18.7s18.7-28.3 18.7-45.3z"],
12892
+ "display": [576, 512, [], "solid", "M64 0C28.7 0 0 28.7 0 64L0 352c0 35.3 28.7 64 64 64l176 0-10.7 32L160 448c-17.7 0-32 14.3-32 32s14.3 32 32 32l256 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-69.3 0L336 416l176 0c35.3 0 64-28.7 64-64l0-288c0-35.3-28.7-64-64-64L64 0zM512 64l0 288L64 352 64 64l448 0z"],
12893
+ "fingerprint": [512, 512, [], "regular", "M48 256C48 141.1 141.1 48 256 48c63.1 0 119.6 28.1 157.8 72.5c8.6 10.1 23.8 11.2 33.8 2.6s11.2-23.8 2.6-33.8C403.3 34.6 333.7 0 256 0C114.6 0 0 114.6 0 256l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40zm458.5-52.9c-2.7-13-15.5-21.3-28.4-18.5s-21.3 15.5-18.5 28.4c2.9 13.9 4.5 28.3 4.5 43.1l0 40c0 13.3 10.7 24 24 24s24-10.7 24-24l0-40c0-18.1-1.9-35.8-5.5-52.9zM256 80c-19 0-37.4 3-54.5 8.6c-15.2 5-18.7 23.7-8.3 35.9c7.1 8.3 18.8 10.8 29.4 7.9c10.6-2.9 21.8-4.4 33.4-4.4c70.7 0 128 57.3 128 128l0 24.9c0 25.2-1.5 50.3-4.4 75.3c-1.7 14.6 9.4 27.8 24.2 27.8c11.8 0 21.9-8.6 23.3-20.3c3.3-27.4 5-55 5-82.7l0-24.9c0-97.2-78.8-176-176-176zM150.7 148.7c-9.1-10.6-25.3-11.4-33.9-.4C93.7 178 80 215.4 80 256l0 24.9c0 24.2-2.6 48.4-7.8 71.9C68.8 368.4 80.1 384 96.1 384c10.5 0 19.9-7 22.2-17.3c6.4-28.1 9.7-56.8 9.7-85.8l0-24.9c0-27.2 8.5-52.4 22.9-73.1c7.2-10.4 8-24.6-.2-34.2zM256 160c-53 0-96 43-96 96l0 24.9c0 35.9-4.6 71.5-13.8 106.1c-3.8 14.3 6.7 29 21.5 29c9.5 0 17.9-6.2 20.4-15.4c10.5-39 15.9-79.2 15.9-119.7l0-24.9c0-28.7 23.3-52 52-52s52 23.3 52 52l0 24.9c0 36.3-3.5 72.4-10.4 107.9c-2.7 13.9 7.7 27.2 21.8 27.2c10.2 0 19-7 21-17c7.7-38.8 11.6-78.3 11.6-118.1l0-24.9c0-53-43-96-96-96zm24 96c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 24.9c0 59.9-11 119.3-32.5 175.2l-5.9 15.3c-4.8 12.4 1.4 26.3 13.8 31s26.3-1.4 31-13.8l5.9-15.3C267.9 411.9 280 346.7 280 280.9l0-24.9z"],
12894
+ "mobile-screen": [384, 512, [], "solid", "M16 64C16 28.7 44.7 0 80 0L304 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L80 512c-35.3 0-64-28.7-64-64L16 64zM144 448c0 8.8 7.2 16 16 16l64 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-64 0c-8.8 0-16 7.2-16 16zM304 64L80 64l0 320 224 0 0-320z"],
12895
+ "vr-cardboard": [640, 512, ["vr"], "solid", "M576 64L64 64C28.7 64 0 92.7 0 128L0 384c0 35.3 28.7 64 64 64l120.4 0c24.2 0 46.4-13.7 57.2-35.4l32-64c8.8-17.5 26.7-28.6 46.3-28.6s37.5 11.1 46.3 28.6l32 64c10.8 21.7 33 35.4 57.2 35.4L576 448c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64zM96 240a64 64 0 1 1 128 0A64 64 0 1 1 96 240zm384-64a64 64 0 1 1 0 128 64 64 0 1 1 0-128z"],
12896
+ "gamepad": [640, 512, [], "solid", "M192 64C86 64 0 150 0 256S86 448 192 448l256 0c106 0 192-86 192-192s-86-192-192-192L192 64zM496 168a40 40 0 1 1 0 80 40 40 0 1 1 0-80zM392 304a40 40 0 1 1 80 0 40 40 0 1 1 -80 0zM168 200c0-13.3 10.7-24 24-24s24 10.7 24 24l0 32 32 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-32 0 0 32c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-32-32 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l32 0 0-32z"],
12897
+ "keyboard": [576, 512, [], "regular", "M64 112c-8.8 0-16 7.2-16 16l0 256c0 8.8 7.2 16 16 16l448 0c8.8 0 16-7.2 16-16l0-256c0-8.8-7.2-16-16-16L64 112zM0 128C0 92.7 28.7 64 64 64l448 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zM176 320l224 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-224 0c-8.8 0-16-7.2-16-16l0-16c0-8.8 7.2-16 16-16zm-72-72c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16zm16-96l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16zm16-96l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16zm16-96l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16zm16-96l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16c0-8.8 7.2-16 16-16zm64 96c0-8.8 7.2-16 16-16l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16zm16-96l16 0c8.8 0 16 7.2 16 16l0 16c0 8.8-7.2 16-16 16l-16 0c-8.8 0-16-7.2-16-16l0-16c0-8.8 7.2-16 16-16z"],
12898
+ "headset": [512, 512, [], "solid", "M256 48C141.1 48 48 141.1 48 256l0 40c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-40C0 114.6 114.6 0 256 0S512 114.6 512 256l0 144.1c0 48.6-39.4 88-88.1 88L313.6 488c-8.3 14.3-23.8 24-41.6 24l-32 0c-26.5 0-48-21.5-48-48s21.5-48 48-48l32 0c17.8 0 33.3 9.7 41.6 24l110.4 .1c22.1 0 40-17.9 40-40L464 256c0-114.9-93.1-208-208-208zM144 208l16 0c17.7 0 32 14.3 32 32l0 112c0 17.7-14.3 32-32 32l-16 0c-35.3 0-64-28.7-64-64l0-48c0-35.3 28.7-64 64-64zm224 0c35.3 0 64 28.7 64 64l0 48c0 35.3-28.7 64-64 64l-16 0c-17.7 0-32-14.3-32-32l0-112c0-17.7 14.3-32 32-32l16 0z"],
12899
+ "camera": [512, 512, [], "solid", "M149.1 64.8L138.7 96 64 96C28.7 96 0 124.7 0 160L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64l-74.7 0L362.9 64.8C356.4 45.2 338.1 32 317.4 32L194.6 32c-20.7 0-39 13.2-45.5 32.8zM256 192a96 96 0 1 1 0 192 96 96 0 1 1 0-192z"],
12900
+ "print": [512, 512, [], "solid", "M128 0C92.7 0 64 28.7 64 64l0 96 64 0 0-96 226.7 0L384 93.3l0 66.7 64 0 0-66.7c0-17-6.7-33.3-18.7-45.3L400 18.7C388 6.7 371.7 0 354.7 0L128 0zM384 352l0 32 0 64-256 0 0-64 0-16 0-16 256 0zm64 32l32 0c17.7 0 32-14.3 32-32l0-96c0-35.3-28.7-64-64-64L64 192c-35.3 0-64 28.7-64 64l0 96c0 17.7 14.3 32 32 32l32 0 0 64c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-64zM432 248a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"],
12901
+ "bookmark": [384, 512, [], "regular", "M0 48C0 21.5 21.5 0 48 0l0 48 0 393.4 130.1-92.9c8.3-6 19.6-6 27.9 0L336 441.4 336 48 48 48 48 0 336 0c26.5 0 48 21.5 48 48l0 440c0 9-5 17.2-13 21.3s-17.6 3.4-24.9-1.8L192 397.5 37.9 507.5c-7.3 5.2-16.9 5.9-24.9 1.8S0 497 0 488L0 48z"],
12902
+ "calendar": [448, 512, [], "regular", "M152 24c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40L64 64C28.7 64 0 92.7 0 128l0 16 0 48L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-256 0-48 0-16c0-35.3-28.7-64-64-64l-40 0 0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40L152 64l0-40zM48 192l352 0 0 256c0 8.8-7.2 16-16 16L64 464c-8.8 0-16-7.2-16-16l0-256z"],
12903
+ "chart": [448, 512, [], "solid", "M160 80c0-26.5 21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 352c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-352zM0 272c0-26.5 21.5-48 48-48l32 0c26.5 0 48 21.5 48 48l0 160c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48L0 272zM368 96l32 0c26.5 0 48 21.5 48 48l0 288c0 26.5-21.5 48-48 48l-32 0c-26.5 0-48-21.5-48-48l0-288c0-26.5 21.5-48 48-48z"],
12904
+ "check": [448, 512, [], "solid", "M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"],
12905
+ "clone": [512, 512, [], "regular", "M64 464l224 0c8.8 0 16-7.2 16-16l0-64 48 0 0 64c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 224c0-35.3 28.7-64 64-64l64 0 0 48-64 0c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16zM224 304l224 0c8.8 0 16-7.2 16-16l0-224c0-8.8-7.2-16-16-16L224 48c-8.8 0-16 7.2-16 16l0 224c0 8.8 7.2 16 16 16zm-64-16l0-224c0-35.3 28.7-64 64-64L448 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64l-224 0c-35.3 0-64-28.7-64-64z"],
12906
+ "copy": [448, 512, [], "regular", "M384 336l-192 0c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l140.1 0L400 115.9 400 320c0 8.8-7.2 16-16 16zM192 384l192 0c35.3 0 64-28.7 64-64l0-204.1c0-12.7-5.1-24.9-14.1-33.9L366.1 14.1c-9-9-21.2-14.1-33.9-14.1L192 0c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64zM64 128c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l192 0c35.3 0 64-28.7 64-64l0-32-48 0 0 32c0 8.8-7.2 16-16 16L64 464c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l32 0 0-48-32 0z"],
12907
+ "paste": [512, 512, [], "regular", "M104.6 48L64 48C28.7 48 0 76.7 0 112L0 384c0 35.3 28.7 64 64 64l96 0 0-48-96 0c-8.8 0-16-7.2-16-16l0-272c0-8.8 7.2-16 16-16l16 0c0 17.7 14.3 32 32 32l72.4 0C202 108.4 227.6 96 256 96l62 0c-7.1-27.6-32.2-48-62-48l-40.6 0C211.6 20.9 188.2 0 160 0s-51.6 20.9-55.4 48zM144 56a16 16 0 1 1 32 0 16 16 0 1 1 -32 0zM448 464l-192 0c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l140.1 0L464 243.9 464 448c0 8.8-7.2 16-16 16zM256 512l192 0c35.3 0 64-28.7 64-64l0-204.1c0-12.7-5.1-24.9-14.1-33.9l-67.9-67.9c-9-9-21.2-14.1-33.9-14.1L256 128c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64z"],
12908
+ "edit": [512, 512, [], "regular", "M441 58.9L453.1 71c9.4 9.4 9.4 24.6 0 33.9L424 134.1 377.9 88 407 58.9c9.4-9.4 24.6-9.4 33.9 0zM209.8 256.2L344 121.9 390.1 168 255.8 302.2c-2.9 2.9-6.5 5-10.4 6.1l-58.5 16.7 16.7-58.5c1.1-3.9 3.2-7.5 6.1-10.4zM373.1 25L175.8 222.2c-8.7 8.7-15 19.4-18.3 31.1l-28.6 100c-2.4 8.4-.1 17.4 6.1 23.6s15.2 8.5 23.6 6.1l100-28.6c11.8-3.4 22.5-9.7 31.1-18.3L487 138.9c28.1-28.1 28.1-73.7 0-101.8L474.9 25C446.8-3.1 401.2-3.1 373.1 25zM88 64C39.4 64 0 103.4 0 152L0 424c0 48.6 39.4 88 88 88l272 0c48.6 0 88-39.4 88-88l0-112c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 112c0 22.1-17.9 40-40 40L88 464c-22.1 0-40-17.9-40-40l0-272c0-22.1 17.9-40 40-40l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L88 64z"],
12909
+ "envelope": [512, 512, [], "regular", "M64 112c-8.8 0-16 7.2-16 16l0 22.1L220.5 291.7c20.7 17 50.4 17 71.1 0L464 150.1l0-22.1c0-8.8-7.2-16-16-16L64 112zM48 212.2L48 384c0 8.8 7.2 16 16 16l384 0c8.8 0 16-7.2 16-16l0-171.8L322 328.8c-38.4 31.5-93.7 31.5-132 0L48 212.2zM0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128z"],
12910
+ "envelope-open": [512, 512, [], "regular", "M255.4 48.2c.2-.1 .4-.2 .6-.2s.4 .1 .6 .2L460.6 194c2.1 1.5 3.4 3.9 3.4 6.5l0 13.6L291.5 355.7c-20.7 17-50.4 17-71.1 0L48 214.1l0-13.6c0-2.6 1.2-5 3.4-6.5L255.4 48.2zM48 276.2L190 392.8c38.4 31.5 93.7 31.5 132 0L464 276.2 464 456c0 4.4-3.6 8-8 8L56 464c-4.4 0-8-3.6-8-8l0-179.8zM256 0c-10.2 0-20.2 3.2-28.5 9.1L23.5 154.9C8.7 165.4 0 182.4 0 200.5L0 456c0 30.9 25.1 56 56 56l400 0c30.9 0 56-25.1 56-56l0-255.5c0-18.1-8.7-35.1-23.4-45.6L284.5 9.1C276.2 3.2 266.2 0 256 0z"],
12911
+ "map": [576, 512, [], "regular", "M565.6 36.2C572.1 40.7 576 48.1 576 56l0 336c0 10-6.2 18.9-15.5 22.4l-168 64c-5.2 2-10.9 2.1-16.1 .3L192.5 417.5l-160 61c-7.4 2.8-15.7 1.8-22.2-2.7S0 463.9 0 456L0 120c0-10 6.1-18.9 15.5-22.4l168-64c5.2-2 10.9-2.1 16.1-.3L383.5 94.5l160-61c7.4-2.8 15.7-1.8 22.2 2.7zM48 136.5l0 284.6 120-45.7 0-284.6L48 136.5zM360 422.7l0-285.4-144-48 0 285.4 144 48zm48-1.5l120-45.7 0-284.6L408 136.5l0 284.6z"],
12912
+ "note-sticky": [448, 512, ["sticky-note"], "regular", "M64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l224 0 0-80c0-17.7 14.3-32 32-32l80 0 0-224c0-8.8-7.2-16-16-16L64 80zM288 480L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l320 0c35.3 0 64 28.7 64 64l0 224 0 5.5c0 17-6.7 33.3-18.7 45.3l-90.5 90.5c-12 12-28.3 18.7-45.3 18.7l-5.5 0z"],
12913
+ "file": [384, 512, [], "regular", "M320 464c8.8 0 16-7.2 16-16l0-288-80 0c-17.7 0-32-14.3-32-32l0-80L64 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16l256 0zM0 64C0 28.7 28.7 0 64 0L229.5 0c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64z"],
12914
+ "file-video": [384, 512, [], "regular", "M320 464c8.8 0 16-7.2 16-16l0-288-80 0c-17.7 0-32-14.3-32-32l0-80L64 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16l256 0zM0 64C0 28.7 28.7 0 64 0L229.5 0c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3L384 448c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM80 288c0-17.7 14.3-32 32-32l96 0c17.7 0 32 14.3 32 32l0 16 44.9-29.9c2-1.3 4.4-2.1 6.8-2.1c6.8 0 12.3 5.5 12.3 12.3l0 103.4c0 6.8-5.5 12.3-12.3 12.3c-2.4 0-4.8-.7-6.8-2.1L240 368l0 16c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-96z"],
12915
+ "file-code": [384, 512, [], "regular", "M64 464c-8.8 0-16-7.2-16-16L48 64c0-8.8 7.2-16 16-16l160 0 0 80c0 17.7 14.3 32 32 32l80 0 0 288c0 8.8-7.2 16-16 16L64 464zM64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-293.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0L64 0zm97 289c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0L79 303c-9.4 9.4-9.4 24.6 0 33.9l48 48c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-31-31 31-31zM257 255c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l31 31-31 31c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l48-48c9.4-9.4 9.4-24.6 0-33.9l-48-48z"],
12916
+ "file-zip": [384, 512, [], "regular", "M64 464c-8.8 0-16-7.2-16-16L48 64c0-8.8 7.2-16 16-16l48 0c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16l48 0 0 80c0 17.7 14.3 32 32 32l80 0 0 288c0 8.8-7.2 16-16 16L64 464zM64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-293.5c0-17-6.7-33.3-18.7-45.3L274.7 18.7C262.7 6.7 246.5 0 229.5 0L64 0zm48 112c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm0 64c0 8.8 7.2 16 16 16l32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0c-8.8 0-16 7.2-16 16zm-6.3 71.8L82.1 335.9c-1.4 5.4-2.1 10.9-2.1 16.4c0 35.2 28.8 63.7 64 63.7s64-28.5 64-63.7c0-5.5-.7-11.1-2.1-16.4l-23.5-88.2c-3.7-14-16.4-23.8-30.9-23.8l-14.8 0c-14.5 0-27.2 9.7-30.9 23.8zM128 336l32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16z"],
12917
+ "file-pdf": [512, 512, [], "regular", "M64 464l48 0 0 48-48 0c-35.3 0-64-28.7-64-64L0 64C0 28.7 28.7 0 64 0L229.5 0c17 0 33.3 6.7 45.3 18.7l90.5 90.5c12 12 18.7 28.3 18.7 45.3L384 304l-48 0 0-144-80 0c-17.7 0-32-14.3-32-32l0-80L64 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16zM176 352l32 0c30.9 0 56 25.1 56 56s-25.1 56-56 56l-16 0 0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48 0-80c0-8.8 7.2-16 16-16zm32 80c13.3 0 24-10.7 24-24s-10.7-24-24-24l-16 0 0 48 16 0zm96-80l32 0c26.5 0 48 21.5 48 48l0 64c0 26.5-21.5 48-48 48l-32 0c-8.8 0-16-7.2-16-16l0-128c0-8.8 7.2-16 16-16zm32 128c8.8 0 16-7.2 16-16l0-64c0-8.8-7.2-16-16-16l-16 0 0 96 16 0zm80-112c0-8.8 7.2-16 16-16l48 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 32 32 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-32 0 0 48c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-64 0-64z"],
12918
+ "scroll": [576, 512, ["script"], "solid", "M0 80l0 48c0 17.7 14.3 32 32 32l16 0 48 0 0-80c0-26.5-21.5-48-48-48S0 53.5 0 80zM112 32c10 13.4 16 30 16 48l0 304c0 35.3 28.7 64 64 64s64-28.7 64-64l0-5.3c0-32.4 26.3-58.7 58.7-58.7L480 320l0-192c0-53-43-96-96-96L112 32zM464 480c61.9 0 112-50.1 112-112c0-8.8-7.2-16-16-16l-245.3 0c-14.7 0-26.7 11.9-26.7 26.7l0 5.3c0 53-43 96-96 96l176 0 96 0z"],
12919
+ "floppy-disk": [448, 512, ["save"], "regular", "M48 96l0 320c0 8.8 7.2 16 16 16l320 0c8.8 0 16-7.2 16-16l0-245.5c0-4.2-1.7-8.3-4.7-11.3l33.9-33.9c12 12 18.7 28.3 18.7 45.3L448 416c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96C0 60.7 28.7 32 64 32l245.5 0c17 0 33.3 6.7 45.3 18.7l74.5 74.5-33.9 33.9L320.8 84.7c-.3-.3-.5-.5-.8-.8L320 184c0 13.3-10.7 24-24 24l-192 0c-13.3 0-24-10.7-24-24L80 80 64 80c-8.8 0-16 7.2-16 16zm80-16l0 80 144 0 0-80L128 80zm32 240a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z"],
12920
+ "download": [512, 512, [], "solid", "M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 242.7-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7 288 32zM64 352c-35.3 0-64 28.7-64 64l0 32c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-32c0-35.3-28.7-64-64-64l-101.5 0-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352 64 352zm368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"],
12921
+ "upload": [512, 512, [], "solid", "M288 109.3L288 352c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-242.7-73.4 73.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l128-128c12.5-12.5 32.8-12.5 45.3 0l128 128c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L288 109.3zM64 352l128 0c0 35.3 28.7 64 64 64s64-28.7 64-64l128 0c35.3 0 64 28.7 64 64l0 32c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64l0-32c0-35.3 28.7-64 64-64zM432 456a24 24 0 1 0 0-48 24 24 0 1 0 0 48z"],
12922
+ "gear": [512, 512, [], "solid", "M495.9 166.6c3.2 8.7 .5 18.4-6.4 24.6l-43.3 39.4c1.1 8.3 1.7 16.8 1.7 25.4s-.6 17.1-1.7 25.4l43.3 39.4c6.9 6.2 9.6 15.9 6.4 24.6c-4.4 11.9-9.7 23.3-15.8 34.3l-4.7 8.1c-6.6 11-14 21.4-22.1 31.2c-5.9 7.2-15.7 9.6-24.5 6.8l-55.7-17.7c-13.4 10.3-28.2 18.9-44 25.4l-12.5 57.1c-2 9.1-9 16.3-18.2 17.8c-13.8 2.3-28 3.5-42.5 3.5s-28.7-1.2-42.5-3.5c-9.2-1.5-16.2-8.7-18.2-17.8l-12.5-57.1c-15.8-6.5-30.6-15.1-44-25.4L83.1 425.9c-8.8 2.8-18.6 .3-24.5-6.8c-8.1-9.8-15.5-20.2-22.1-31.2l-4.7-8.1c-6.1-11-11.4-22.4-15.8-34.3c-3.2-8.7-.5-18.4 6.4-24.6l43.3-39.4C64.6 273.1 64 264.6 64 256s.6-17.1 1.7-25.4L22.4 191.2c-6.9-6.2-9.6-15.9-6.4-24.6c4.4-11.9 9.7-23.3 15.8-34.3l4.7-8.1c6.6-11 14-21.4 22.1-31.2c5.9-7.2 15.7-9.6 24.5-6.8l55.7 17.7c13.4-10.3 28.2-18.9 44-25.4l12.5-57.1c2-9.1 9-16.3 18.2-17.8C227.3 1.2 241.5 0 256 0s28.7 1.2 42.5 3.5c9.2 1.5 16.2 8.7 18.2 17.8l12.5 57.1c15.8 6.5 30.6 15.1 44 25.4l55.7-17.7c8.8-2.8 18.6-.3 24.5 6.8c8.1 9.8 15.5 20.2 22.1 31.2l4.7 8.1c6.1 11 11.4 22.4 15.8 34.3zM256 336a80 80 0 1 0 0-160 80 80 0 1 0 0 160z"],
12923
+ "gears": [640, 512, [], "solid", "M308.5 135.3c7.1-6.3 9.9-16.2 6.2-25c-2.3-5.3-4.8-10.5-7.6-15.5L304 89.4c-3-5-6.3-9.9-9.8-14.6c-5.7-7.6-15.7-10.1-24.7-7.1l-28.2 9.3c-10.7-8.8-23-16-36.2-20.9L199 27.1c-1.9-9.3-9.1-16.7-18.5-17.8C173.9 8.4 167.2 8 160.4 8l-.7 0c-6.8 0-13.5 .4-20.1 1.2c-9.4 1.1-16.6 8.6-18.5 17.8L115 56.1c-13.3 5-25.5 12.1-36.2 20.9L50.5 67.8c-9-3-19-.5-24.7 7.1c-3.5 4.7-6.8 9.6-9.9 14.6l-3 5.3c-2.8 5-5.3 10.2-7.6 15.6c-3.7 8.7-.9 18.6 6.2 25l22.2 19.8C32.6 161.9 32 168.9 32 176s.6 14.1 1.7 20.9L11.5 216.7c-7.1 6.3-9.9 16.2-6.2 25c2.3 5.3 4.8 10.5 7.6 15.6l3 5.2c3 5.1 6.3 9.9 9.9 14.6c5.7 7.6 15.7 10.1 24.7 7.1l28.2-9.3c10.7 8.8 23 16 36.2 20.9l6.1 29.1c1.9 9.3 9.1 16.7 18.5 17.8c6.7 .8 13.5 1.2 20.4 1.2s13.7-.4 20.4-1.2c9.4-1.1 16.6-8.6 18.5-17.8l6.1-29.1c13.3-5 25.5-12.1 36.2-20.9l28.2 9.3c9 3 19 .5 24.7-7.1c3.5-4.7 6.8-9.5 9.8-14.6l3.1-5.4c2.8-5 5.3-10.2 7.6-15.5c3.7-8.7 .9-18.6-6.2-25l-22.2-19.8c1.1-6.8 1.7-13.8 1.7-20.9s-.6-14.1-1.7-20.9l22.2-19.8zM112 176a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM504.7 500.5c6.3 7.1 16.2 9.9 25 6.2c5.3-2.3 10.5-4.8 15.5-7.6l5.4-3.1c5-3 9.9-6.3 14.6-9.8c7.6-5.7 10.1-15.7 7.1-24.7l-9.3-28.2c8.8-10.7 16-23 20.9-36.2l29.1-6.1c9.3-1.9 16.7-9.1 17.8-18.5c.8-6.7 1.2-13.5 1.2-20.4s-.4-13.7-1.2-20.4c-1.1-9.4-8.6-16.6-17.8-18.5L583.9 307c-5-13.3-12.1-25.5-20.9-36.2l9.3-28.2c3-9 .5-19-7.1-24.7c-4.7-3.5-9.6-6.8-14.6-9.9l-5.3-3c-5-2.8-10.2-5.3-15.6-7.6c-8.7-3.7-18.6-.9-25 6.2l-19.8 22.2c-6.8-1.1-13.8-1.7-20.9-1.7s-14.1 .6-20.9 1.7l-19.8-22.2c-6.3-7.1-16.2-9.9-25-6.2c-5.3 2.3-10.5 4.8-15.6 7.6l-5.2 3c-5.1 3-9.9 6.3-14.6 9.9c-7.6 5.7-10.1 15.7-7.1 24.7l9.3 28.2c-8.8 10.7-16 23-20.9 36.2L315.1 313c-9.3 1.9-16.7 9.1-17.8 18.5c-.8 6.7-1.2 13.5-1.2 20.4s.4 13.7 1.2 20.4c1.1 9.4 8.6 16.6 17.8 18.5l29.1 6.1c5 13.3 12.1 25.5 20.9 36.2l-9.3 28.2c-3 9-.5 19 7.1 24.7c4.7 3.5 9.5 6.8 14.6 9.8l5.4 3.1c5 2.8 10.2 5.3 15.5 7.6c8.7 3.7 18.6 .9 25-6.2l19.8-22.2c6.8 1.1 13.8 1.7 20.9 1.7s14.1-.6 20.9-1.7l19.8 22.2zM464 304a48 48 0 1 1 0 96 48 48 0 1 1 0-96z"],
12924
+ "sliders": [512, 512, [], "solid", "M0 416c0 17.7 14.3 32 32 32l54.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 448c17.7 0 32-14.3 32-32s-14.3-32-32-32l-246.7 0c-12.3-28.3-40.5-48-73.3-48s-61 19.7-73.3 48L32 384c-17.7 0-32 14.3-32 32zm128 0a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zM320 256a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm32-80c-32.8 0-61 19.7-73.3 48L32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l246.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48l54.7 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-54.7 0c-12.3-28.3-40.5-48-73.3-48zM192 128a32 32 0 1 1 0-64 32 32 0 1 1 0 64zm73.3-64C253 35.7 224.8 16 192 16s-61 19.7-73.3 48L32 64C14.3 64 0 78.3 0 96s14.3 32 32 32l86.7 0c12.3 28.3 40.5 48 73.3 48s61-19.7 73.3-48L480 128c17.7 0 32-14.3 32-32s-14.3-32-32-32L265.3 64z"],
12925
+ "eye": [576, 512, [], "regular", "M288 80c-65.2 0-118.8 29.6-159.9 67.7C89.6 183.5 63 226 49.4 256c13.6 30 40.2 72.5 78.6 108.3C169.2 402.4 222.8 432 288 432s118.8-29.6 159.9-67.7C486.4 328.5 513 286 526.6 256c-13.6-30-40.2-72.5-78.6-108.3C406.8 109.6 353.2 80 288 80zM95.4 112.6C142.5 68.8 207.2 32 288 32s145.5 36.8 192.6 80.6c46.8 43.5 78.1 95.4 93 131.1c3.3 7.9 3.3 16.7 0 24.6c-14.9 35.7-46.2 87.7-93 131.1C433.5 443.2 368.8 480 288 480s-145.5-36.8-192.6-80.6C48.6 356 17.3 304 2.5 268.3c-3.3-7.9-3.3-16.7 0-24.6C17.3 208 48.6 156 95.4 112.6zM288 336c44.2 0 80-35.8 80-80s-35.8-80-80-80c-.7 0-1.3 0-2 0c1.3 5.1 2 10.5 2 16c0 35.3-28.7 64-64 64c-5.5 0-10.9-.7-16-2c0 .7 0 1.3 0 2c0 44.2 35.8 80 80 80zm0-208a128 128 0 1 1 0 256 128 128 0 1 1 0-256z"],
12926
+ "eye-slash": [640, 512, [], "regular", "M38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L525.6 386.7c39.6-40.6 66.4-86.1 79.9-118.4c3.3-7.9 3.3-16.7 0-24.6c-14.9-35.7-46.2-87.7-93-131.1C465.5 68.8 400.8 32 320 32c-68.2 0-125 26.3-169.3 60.8L38.8 5.1zm151 118.3C226 97.7 269.5 80 320 80c65.2 0 118.8 29.6 159.9 67.7C518.4 183.5 545 226 558.6 256c-12.6 28-36.6 66.8-70.9 100.9l-53.8-42.2c9.1-17.6 14.2-37.5 14.2-58.7c0-70.7-57.3-128-128-128c-32.2 0-61.7 11.9-84.2 31.5l-46.1-36.1zM394.9 284.2l-81.5-63.9c4.2-8.5 6.6-18.2 6.6-28.3c0-5.5-.7-10.9-2-16c.7 0 1.3 0 2 0c44.2 0 80 35.8 80 80c0 9.9-1.8 19.4-5.1 28.2zm9.4 130.3C378.8 425.4 350.7 432 320 432c-65.2 0-118.8-29.6-159.9-67.7C121.6 328.5 95 286 81.4 256c8.3-18.4 21.5-41.5 39.4-64.8L83.1 161.5C60.3 191.2 44 220.8 34.5 243.7c-3.3 7.9-3.3 16.7 0 24.6c14.9 35.7 46.2 87.7 93 131.1C174.5 443.2 239.2 480 320 480c47.8 0 89.9-12.9 126.2-32.5l-41.9-33zM192 256c0 70.7 57.3 128 128 128c13.3 0 26.1-2 38.2-5.8L302 334c-23.5-5.4-43.1-21.2-53.7-42.3l-56.1-44.2c-.2 2.8-.3 5.6-.3 8.5z"],
12927
+ "comment": [512, 512, [], "regular", "M123.6 391.3c12.9-9.4 29.6-11.8 44.6-6.4c26.5 9.6 56.2 15.1 87.8 15.1c124.7 0 208-80.5 208-160s-83.3-160-208-160S48 160.5 48 240c0 32 12.4 62.8 35.7 89.2c8.6 9.7 12.8 22.5 11.8 35.5c-1.4 18.1-5.7 34.7-11.3 49.4c17-7.9 31.1-16.7 39.4-22.7zM21.2 431.9c1.8-2.7 3.5-5.4 5.1-8.1c10-16.6 19.5-38.4 21.4-62.9C17.7 326.8 0 285.1 0 240C0 125.1 114.6 32 256 32s256 93.1 256 208s-114.6 208-256 208c-37.1 0-72.3-6.4-104.1-17.9c-11.9 8.7-31.3 20.6-54.3 30.6c-15.1 6.6-32.3 12.6-50.1 16.1c-.8 .2-1.6 .3-2.4 .5c-4.4 .8-8.7 1.5-13.2 1.9c-.2 0-.5 .1-.7 .1c-5.1 .5-10.2 .8-15.3 .8c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4c4.1-4.2 7.8-8.7 11.3-13.5c1.7-2.3 3.3-4.6 4.8-6.9l.3-.5z"],
12928
+ "message": [512, 512, [], "regular", "M160 368c26.5 0 48 21.5 48 48l0 16 72.5-54.4c8.3-6.2 18.4-9.6 28.8-9.6L448 368c8.8 0 16-7.2 16-16l0-288c0-8.8-7.2-16-16-16L64 48c-8.8 0-16 7.2-16 16l0 288c0 8.8 7.2 16 16 16l96 0zm48 124l-.2 .2-5.1 3.8-17.1 12.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3l0-21.3 0-6.4 0-.3 0-4 0-48-48 0-48 0c-35.3 0-64-28.7-64-64L0 64C0 28.7 28.7 0 64 0L448 0c35.3 0 64 28.7 64 64l0 288c0 35.3-28.7 64-64 64l-138.7 0L208 492z"],
12929
+ "folder": [512, 512, [], "regular", "M0 96C0 60.7 28.7 32 64 32l132.1 0c19.1 0 37.4 7.6 50.9 21.1L289.9 96 448 96c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64L0 96zM64 80c-8.8 0-16 7.2-16 16l0 320c0 8.8 7.2 16 16 16l384 0c8.8 0 16-7.2 16-16l0-256c0-8.8-7.2-16-16-16l-161.4 0c-10.6 0-20.8-4.2-28.3-11.7L213.1 87c-4.5-4.5-10.6-7-17-7L64 80z"],
12930
+ "folder-closed": [512, 512, [], "regular", "M251.7 127.6s0 0 0 0c10.5 10.5 24.7 16.4 39.6 16.4L448 144c8.8 0 16 7.2 16 16l0 32L48 192l0-96c0-8.8 7.2-16 16-16l133.5 0c4.2 0 8.3 1.7 11.3 4.7l33.9-33.9L208.8 84.7l42.9 42.9zM48 240l416 0 0 176c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16l0-176zM285.7 93.7L242.7 50.7c-12-12-28.3-18.7-45.3-18.7L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L291.3 96c-2.1 0-4.2-.8-5.7-2.3z"],
12931
+ "folder-open": [576, 512, [], "regular", "M384 480l48 0c11.4 0 21.9-6 27.6-15.9l112-192c5.8-9.9 5.8-22.1 .1-32.1S555.5 224 544 224l-400 0c-11.4 0-21.9 6-27.6 15.9L48 357.1 48 96c0-8.8 7.2-16 16-16l117.5 0c4.2 0 8.3 1.7 11.3 4.7l26.5 26.5c21 21 49.5 32.8 79.2 32.8L416 144c8.8 0 16 7.2 16 16l0 32 48 0 0-32c0-35.3-28.7-64-64-64L298.5 96c-17 0-33.3-6.7-45.3-18.7L226.7 50.7c-12-12-28.3-18.7-45.3-18.7L64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l23.7 0L384 480z"],
12932
+ "grip-vertical": [320, 512, [], "solid", "M40 352l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zm192 0l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 320c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 192l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40zM40 160c-22.1 0-40-17.9-40-40L0 72C0 49.9 17.9 32 40 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0zM232 32l48 0c22.1 0 40 17.9 40 40l0 48c0 22.1-17.9 40-40 40l-48 0c-22.1 0-40-17.9-40-40l0-48c0-22.1 17.9-40 40-40z"],
12933
+ "image": [512, 512, [], "regular", "M448 80c8.8 0 16 7.2 16 16l0 319.8-5-6.5-136-176c-4.5-5.9-11.6-9.3-19-9.3s-14.4 3.4-19 9.3L202 340.7l-30.5-42.7C167 291.7 159.8 288 152 288s-15 3.7-19.5 10.1l-80 112L48 416.3l0-.3L48 96c0-8.8 7.2-16 16-16l384 0zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm80 192a48 48 0 1 0 0-96 48 48 0 1 0 0 96z"],
12934
+ "images": [576, 512, [], "regular", "M160 80l352 0c8.8 0 16 7.2 16 16l0 224c0 8.8-7.2 16-16 16l-21.2 0L388.1 178.9c-4.4-6.8-12-10.9-20.1-10.9s-15.7 4.1-20.1 10.9l-52.2 79.8-12.4-16.9c-4.5-6.2-11.7-9.8-19.4-9.8s-14.8 3.6-19.4 9.8L175.6 336 160 336c-8.8 0-16-7.2-16-16l0-224c0-8.8 7.2-16 16-16zM96 96l0 224c0 35.3 28.7 64 64 64l352 0c35.3 0 64-28.7 64-64l0-224c0-35.3-28.7-64-64-64L160 32c-35.3 0-64 28.7-64 64zM48 120c0-13.3-10.7-24-24-24S0 106.7 0 120L0 344c0 75.1 60.9 136 136 136l320 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-320 0c-48.6 0-88-39.4-88-88l0-224zm208 24a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"],
12935
+ "photo-film": [640, 512, ["media"], "solid", "M256 0L576 0c35.3 0 64 28.7 64 64l0 224c0 35.3-28.7 64-64 64l-320 0c-35.3 0-64-28.7-64-64l0-224c0-35.3 28.7-64 64-64zM476 106.7C471.5 100 464 96 456 96s-15.5 4-20 10.7l-56 84L362.7 169c-4.6-5.7-11.5-9-18.7-9s-14.2 3.3-18.7 9l-64 80c-5.8 7.2-6.9 17.1-2.9 25.4s12.4 13.6 21.6 13.6l80 0 48 0 144 0c8.9 0 17-4.9 21.2-12.7s3.7-17.3-1.2-24.6l-96-144zM336 96a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM64 128l96 0 0 256 0 32c0 17.7 14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-32 160 0 0 64c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 192c0-35.3 28.7-64 64-64zm8 64c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0zm0 104c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0zm0 104c-8.8 0-16 7.2-16 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0zm336 16l0 16c0 8.8 7.2 16 16 16l16 0c8.8 0 16-7.2 16-16l0-16c0-8.8-7.2-16-16-16l-16 0c-8.8 0-16 7.2-16 16z"],
12936
+ "left": [320, 512, [], "solid", "M41.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 256 246.6 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"],
12937
+ "right": [320, 512, [], "solid", "M278.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-160 160c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L210.7 256 73.4 118.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l160 160z"],
12938
+ "up": [448, 512, [], "solid", "M201.4 137.4c12.5-12.5 32.8-12.5 45.3 0l160 160c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L224 205.3 86.6 342.6c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l160-160z"],
12939
+ "down": [448, 512, [], "solid", "M201.4 374.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 306.7 86.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z"],
12940
+ "arrows": [512, 512, ["arrows-up-down-left-right"], "solid", "M278.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l9.4-9.4L224 224l-114.7 0 9.4-9.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-64 64c-12.5 12.5-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4L224 288l0 114.7-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l64 64c12.5 12.5 32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-9.4 9.4L288 288l114.7 0-9.4 9.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l64-64c12.5-12.5 12.5-32.8 0-45.3l-64-64c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l9.4 9.4L288 224l0-114.7 9.4 9.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-64-64z"],
12941
+ "rotate": [512, 512, [], "solid", "M142.9 142.9c-17.5 17.5-30.1 38-37.8 59.8c-5.9 16.7-24.2 25.4-40.8 19.5s-25.4-24.2-19.5-40.8C55.6 150.7 73.2 122 97.6 97.6c87.2-87.2 228.3-87.5 315.8-1L455 55c6.9-6.9 17.2-8.9 26.2-5.2s14.8 12.5 14.8 22.2l0 128c0 13.3-10.7 24-24 24l-8.4 0c0 0 0 0 0 0L344 224c-9.7 0-18.5-5.8-22.2-14.8s-1.7-19.3 5.2-26.2l41.1-41.1c-62.6-61.5-163.1-61.2-225.3 1zM16 312c0-13.3 10.7-24 24-24l7.6 0 .7 0L168 288c9.7 0 18.5 5.8 22.2 14.8s1.7 19.3-5.2 26.2l-41.1 41.1c62.6 61.5 163.1 61.2 225.3-1c17.5-17.5 30.1-38 37.8-59.8c5.9-16.7 24.2-25.4 40.8-19.5s25.4 24.2 19.5 40.8c-10.8 30.6-28.4 59.3-52.9 83.8c-87.2 87.2-228.3 87.5-315.8 1L57 457c-6.9 6.9-17.2 8.9-26.2 5.2S16 449.7 16 440l0-119.6 0-.7 0-7.6z"],
12942
+ "rotate-right": [512, 512, ["rotate-forward"], "solid", "M463.5 224l8.5 0c13.3 0 24-10.7 24-24l0-128c0-9.7-5.8-18.5-14.8-22.2s-19.3-1.7-26.2 5.2L413.4 96.6c-87.6-86.5-228.7-86.2-315.8 1c-87.5 87.5-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3c62.2-62.2 162.7-62.5 225.3-1L327 183c-6.9 6.9-8.9 17.2-5.2 26.2s12.5 14.8 22.2 14.8l119.5 0z"],
12943
+ "rotate-left": [512, 512, ["rotate-back"], "solid", "M48.5 224L40 224c-13.3 0-24-10.7-24-24L16 72c0-9.7 5.8-18.5 14.8-22.2s19.3-1.7 26.2 5.2L98.6 96.6c87.6-86.5 228.7-86.2 315.8 1c87.5 87.5 87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3c-62.2-62.2-162.7-62.5-225.3-1L185 183c6.9 6.9 8.9 17.2 5.2 26.2s-12.5 14.8-22.2 14.8L48.5 224z"],
12944
+ "arrow-pointer": [320, 512, [], "solid", "M0 55.2L0 426c0 12.2 9.9 22 22 22c6.3 0 12.4-2.7 16.6-7.5L121.2 346l58.1 116.3c7.9 15.8 27.1 22.2 42.9 14.3s22.2-27.1 14.3-42.9L179.8 320l118.1 0c12.2 0 22.1-9.9 22.1-22.1c0-6.3-2.7-12.3-7.4-16.5L38.6 37.9C34.3 34.1 28.9 32 23.2 32C10.4 32 0 42.4 0 55.2z"],
12945
+ "hand-pointer": [448, 512, [], "regular", "M160 64c0-8.8 7.2-16 16-16s16 7.2 16 16l0 136c0 10.3 6.6 19.5 16.4 22.8s20.6-.1 26.8-8.3c3-3.9 7.6-6.4 12.8-6.4c8.8 0 16 7.2 16 16c0 10.3 6.6 19.5 16.4 22.8s20.6-.1 26.8-8.3c3-3.9 7.6-6.4 12.8-6.4c7.8 0 14.3 5.6 15.7 13c1.6 8.2 7.3 15.1 15.1 18s16.7 1.6 23.3-3.6c2.7-2.1 6.1-3.4 9.9-3.4c8.8 0 16 7.2 16 16l0 16 0 104c0 39.8-32.2 72-72 72l-56 0-59.8 0-.9 0c-37.4 0-72.4-18.7-93.2-49.9L50.7 312.9c-4.9-7.4-2.9-17.3 4.4-22.2s17.3-2.9 22.2 4.4L116 353.2c5.9 8.8 16.8 12.7 26.9 9.7s17-12.4 17-23l0-19.9 0-256zM176 0c-35.3 0-64 28.7-64 64l0 197.7C91.2 238 55.5 232.8 28.5 250.7C-.9 270.4-8.9 310.1 10.8 339.5L78.3 440.8c29.7 44.5 79.6 71.2 133.1 71.2l.9 0 59.8 0 56 0c66.3 0 120-53.7 120-120l0-104 0-16c0-35.3-28.7-64-64-64c-4.5 0-8.8 .5-13 1.3c-11.7-15.4-30.2-25.3-51-25.3c-6.9 0-13.5 1.1-19.7 3.1C288.7 170.7 269.6 160 248 160c-2.7 0-5.4 .2-8 .5L240 64c0-35.3-28.7-64-64-64zm48 304c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96zm48-16c-8.8 0-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96c0-8.8-7.2-16-16-16zm80 16c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 96c0 8.8 7.2 16 16 16s16-7.2 16-16l0-96z"],
12946
+ "log-in": [512, 512, [], "solid", "M352 96l64 0c17.7 0 32 14.3 32 32l0 256c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0c53 0 96-43 96-96l0-256c0-53-43-96-96-96l-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32zm-9.4 182.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L242.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128z"],
12947
+ "log-out": [512, 512, [], "solid", "M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-128-128c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 192 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l210.7 0-73.4 73.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l128-128zM160 96c17.7 0 32-14.3 32-32s-14.3-32-32-32L96 32C43 32 0 75 0 128L0 384c0 53 43 96 96 96l64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0c-17.7 0-32-14.3-32-32l0-256c0-17.7 14.3-32 32-32l64 0z"],
12948
+ "menu-arrows": [512, 512, [], "solid", "M352 144l96 112-96 112M160 144L64 256l96 112", "transform=rotate(90)", "fill=none stroke=currentColor stroke-width=60 stroke-linejoin=round stroke-linecap=round"],
12949
+ "more": [128, 512, [], "solid", "M64 360a56 56 0 1 0 0 112 56 56 0 1 0 0-112zm0-160a56 56 0 1 0 0 112 56 56 0 1 0 0-112zM120 96A56 56 0 1 0 8 96a56 56 0 1 0 112 0z"],
12950
+ "minus": [448, 512, [], "solid", "M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z"],
12951
+ "more-horizontal": [448, 512, [], "solid", "M8 256a56 56 0 1 1 112 0A56 56 0 1 1 8 256zm160 0a56 56 0 1 1 112 0 56 56 0 1 1 -112 0zm216-56a56 56 0 1 1 0 112 56 56 0 1 1 0-112z"],
12952
+ "plus": [448, 512, [], "solid", "M256 80c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 144L48 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l144 0 0 144c0 17.7 14.3 32 32 32s32-14.3 32-32l0-144 144 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-144 0 0-144z"],
12953
+ "circle-plus": [24, 24, [], "regular", "M12 8V16M8 12H16M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z", null, "fill=none stroke-width=2 stroke-linecap=round stroke-linejoin=round"],
12954
+ "search": [512, 512, [], "solid", "M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z"],
12955
+ "compass": [512, 512, [], "regular", "M464 256A208 208 0 1 0 48 256a208 208 0 1 0 416 0zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm306.7 69.1L162.4 380.6c-19.4 7.5-38.5-11.6-31-31l55.5-144.3c3.3-8.5 9.9-15.1 18.4-18.4l144.3-55.5c19.4-7.5 38.5 11.6 31 31L325.1 306.7c-3.2 8.5-9.9 15.1-18.4 18.4zM288 256a32 32 0 1 0 -64 0 32 32 0 1 0 64 0z"],
12956
+ "sidebar": [512, 512, [], "regular", "M64 64h384a32 32 0 0 1 32 32v320a32 32 0 0 1-32 32H64a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32zm128 0v384", null, "fill=none stroke=currentColor stroke-width=50 stroke-linejoin=round stroke-linecap=round"],
12957
+ "table-cells": [512, 512, [], "solid", "M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm88 64l0 64-88 0 0-64 88 0zm56 0l88 0 0 64-88 0 0-64zm240 0l0 64-88 0 0-64 88 0zM64 224l88 0 0 64-88 0 0-64zm232 0l0 64-88 0 0-64 88 0zm64 0l88 0 0 64-88 0 0-64zM152 352l0 64-88 0 0-64 88 0zm56 0l88 0 0 64-88 0 0-64zm240 0l0 64-88 0 0-64 88 0z"],
12958
+ "table-cells-large": [512, 512, [], "solid", "M448 96l0 128-160 0 0-128 160 0zm0 192l0 128-160 0 0-128 160 0zM224 224L64 224 64 96l160 0 0 128zM64 288l160 0 0 128L64 416l0-128zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32z"],
12959
+ "lightbulb": [384, 512, [], "regular", "M297.2 248.9C311.6 228.3 320 203.2 320 176c0-70.7-57.3-128-128-128S64 105.3 64 176c0 27.2 8.4 52.3 22.8 72.9c3.7 5.3 8.1 11.3 12.8 17.7c0 0 0 0 0 0c12.9 17.7 28.3 38.9 39.8 59.8c10.4 19 15.7 38.8 18.3 57.5L109 384c-2.2-12-5.9-23.7-11.8-34.5c-9.9-18-22.2-34.9-34.5-51.8c0 0 0 0 0 0s0 0 0 0c-5.2-7.1-10.4-14.2-15.4-21.4C27.6 247.9 16 213.3 16 176C16 78.8 94.8 0 192 0s176 78.8 176 176c0 37.3-11.6 71.9-31.4 100.3c-5 7.2-10.2 14.3-15.4 21.4c0 0 0 0 0 0s0 0 0 0c-12.3 16.8-24.6 33.7-34.5 51.8c-5.9 10.8-9.6 22.5-11.8 34.5l-48.6 0c2.6-18.7 7.9-38.6 18.3-57.5c11.5-20.9 26.9-42.1 39.8-59.8c0 0 0 0 0 0s0 0 0 0s0 0 0 0c4.7-6.4 9-12.4 12.7-17.7zM192 128c-26.5 0-48 21.5-48 48c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-44.2 35.8-80 80-80c8.8 0 16 7.2 16 16s-7.2 16-16 16zm0 384c-44.2 0-80-35.8-80-80l0-16 160 0 0 16c0 44.2-35.8 80-80 80z"],
12960
+ "flag": [448, 512, [], "regular", "M48 24C48 10.7 37.3 0 24 0S0 10.7 0 24L0 64 0 350.5 0 400l0 88c0 13.3 10.7 24 24 24s24-10.7 24-24l0-100 80.3-20.1c41.1-10.3 84.6-5.5 122.5 13.4c44.2 22.1 95.5 24.8 141.7 7.4l34.7-13c12.5-4.7 20.8-16.6 20.8-30l0-279.7c0-23-24.2-38-44.8-27.7l-9.6 4.8c-46.3 23.2-100.8 23.2-147.1 0c-35.1-17.6-75.4-22-113.5-12.5L48 52l0-28zm0 77.5l96.6-24.2c27-6.7 55.5-3.6 80.4 8.8c54.9 27.4 118.7 29.7 175 6.8l0 241.8-24.4 9.1c-33.7 12.6-71.2 10.7-103.4-5.4c-48.2-24.1-103.3-30.1-155.6-17.1L48 338.5l0-237z"],
12961
+ "shuffle": [512, 512, [], "solid", "M403.8 34.4c12-5 25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-32-32 0c-10.1 0-19.6 4.7-25.6 12.8L284 229.3 244 176l31.2-41.6C293.3 110.2 321.8 96 352 96l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6zM164 282.7L204 336l-31.2 41.6C154.7 401.8 126.2 416 96 416l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c10.1 0 19.6-4.7 25.6-12.8L164 282.7zm274.6 188c-9.2 9.2-22.9 11.9-34.9 6.9s-19.8-16.6-19.8-29.6l0-32-32 0c-30.2 0-58.7-14.2-76.8-38.4L121.6 172.8c-6-8.1-15.5-12.8-25.6-12.8l-64 0c-17.7 0-32-14.3-32-32s14.3-32 32-32l64 0c30.2 0 58.7 14.2 76.8 38.4L326.4 339.2c6 8.1 15.5 12.8 25.6 12.8l32 0 0-32c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l64 64c6 6 9.4 14.1 9.4 22.6s-3.4 16.6-9.4 22.6l-64 64z"],
12962
+ "credit-card": [576, 512, [], "regular", "M512 80c8.8 0 16 7.2 16 16l0 32L48 128l0-32c0-8.8 7.2-16 16-16l448 0zm16 144l0 192c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16l0-192 480 0zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm56 304c-13.3 0-24 10.7-24 24s10.7 24 24 24l48 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0zm128 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l112 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-112 0z"],
12963
+ "lock": [448, 512, [], "solid", "M144 144l0 48 160 0 0-48c0-44.2-35.8-80-80-80s-80 35.8-80 80zM80 192l0-48C80 64.5 144.5 0 224 0s144 64.5 144 144l0 48 16 0c35.3 0 64 28.7 64 64l0 192c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 256c0-35.3 28.7-64 64-64l16 0z"],
12964
+ "lock-open": [576, 512, [], "solid", "M352 144c0-44.2 35.8-80 80-80s80 35.8 80 80l0 48c0 17.7 14.3 32 32 32s32-14.3 32-32l0-48C576 64.5 511.5 0 432 0S288 64.5 288 144l0 48L64 192c-35.3 0-64 28.7-64 64L0 448c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-192c0-35.3-28.7-64-64-64l-32 0 0-48z"],
12965
+ "trash-can": [448, 512, [], "regular", "M170.5 51.6L151.5 80l145 0-19-28.4c-1.5-2.2-4-3.6-6.7-3.6l-93.7 0c-2.7 0-5.2 1.3-6.7 3.6zm147-26.6L354.2 80 368 80l48 0 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 304c0 44.2-35.8 80-80 80l-224 0c-44.2 0-80-35.8-80-80l0-304-8 0c-13.3 0-24-10.7-24-24S10.7 80 24 80l8 0 48 0 13.8 0 36.7-55.1C140.9 9.4 158.4 0 177.1 0l93.7 0c18.7 0 36.2 9.4 46.6 24.9zM80 128l0 304c0 17.7 14.3 32 32 32l224 0c17.7 0 32-14.3 32-32l0-304L80 128zm80 64l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208c0-8.8 7.2-16 16-16s16 7.2 16 16zm80 0l0 208c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-208c0-8.8 7.2-16 16-16s16 7.2 16 16z"],
12966
+ "user": [448, 512, [], "regular", "M304 128a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM49.3 464l349.5 0c-8.9-63.3-63.3-112-129-112l-91.4 0c-65.7 0-120.1 48.7-129 112zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3z"],
12967
+ "street-view": [512, 512, [], "solid", "M320 64A64 64 0 1 0 192 64a64 64 0 1 0 128 0zm-96 96c-35.3 0-64 28.7-64 64l0 48c0 17.7 14.3 32 32 32l1.8 0 11.1 99.5c1.8 16.2 15.5 28.5 31.8 28.5l38.7 0c16.3 0 30-12.3 31.8-28.5L318.2 304l1.8 0c17.7 0 32-14.3 32-32l0-48c0-35.3-28.7-64-64-64l-64 0zM132.3 394.2c13-2.4 21.7-14.9 19.3-27.9s-14.9-21.7-27.9-19.3c-32.4 5.9-60.9 14.2-82 24.8c-10.5 5.3-20.3 11.7-27.8 19.6C6.4 399.5 0 410.5 0 424c0 21.4 15.5 36.1 29.1 45c14.7 9.6 34.3 17.3 56.4 23.4C130.2 504.7 190.4 512 256 512s125.8-7.3 170.4-19.6c22.1-6.1 41.8-13.8 56.4-23.4c13.7-8.9 29.1-23.6 29.1-45c0-13.5-6.4-24.5-14-32.6c-7.5-7.9-17.3-14.3-27.8-19.6c-21-10.6-49.5-18.9-82-24.8c-13-2.4-25.5 6.3-27.9 19.3s6.3 25.5 19.3 27.9c30.2 5.5 53.7 12.8 69 20.5c3.2 1.6 5.8 3.1 7.9 4.5c3.6 2.4 3.6 7.2 0 9.6c-8.8 5.7-23.1 11.8-43 17.3C374.3 457 318.5 464 256 464s-118.3-7-157.7-17.9c-19.9-5.5-34.2-11.6-43-17.3c-3.6-2.4-3.6-7.2 0-9.6c2.1-1.4 4.8-2.9 7.9-4.5c15.3-7.7 38.8-14.9 69-20.5z"],
12968
+ "closed-captioning": [576, 512, ["cc"], "regular", "M512 80c8.8 0 16 7.2 16 16l0 320c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16L48 96c0-8.8 7.2-16 16-16l448 0zM64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l448 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zM200 208c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48s21.5-48 48-48zm144 48c0-26.5 21.5-48 48-48c14.2 0 27 6.1 35.8 16c8.8 9.9 24 10.7 33.9 1.9s10.7-24 1.9-33.9c-17.5-19.6-43.1-32-71.5-32c-53 0-96 43-96 96s43 96 96 96c28.4 0 54-12.4 71.5-32c8.8-9.9 8-25-1.9-33.9s-25-8-33.9 1.9c-8.8 9.9-21.6 16-35.8 16c-26.5 0-48-21.5-48-48z"],
12969
+ "bone": [576, 512, [], "solid", "M153.7 144.8c6.9 16.3 20.6 31.2 38.3 31.2l192 0c17.7 0 31.4-14.9 38.3-31.2C434.4 116.1 462.9 96 496 96c44.2 0 80 35.8 80 80c0 30.4-17 56.9-42 70.4c-3.6 1.9-6 5.5-6 9.6s2.4 7.7 6 9.6c25 13.5 42 40 42 70.4c0 44.2-35.8 80-80 80c-33.1 0-61.6-20.1-73.7-48.8C415.4 350.9 401.7 336 384 336l-192 0c-17.7 0-31.4 14.9-38.3 31.2C141.6 395.9 113.1 416 80 416c-44.2 0-80-35.8-80-80c0-30.4 17-56.9 42-70.4c3.6-1.9 6-5.5 6-9.6s-2.4-7.7-6-9.6C17 232.9 0 206.4 0 176c0-44.2 35.8-80 80-80c33.1 0 61.6 20.1 73.7 48.8z"],
12970
+ "hands-asl-interpreting": [640, 512, ["asl"], "solid", "M156.6 46.3c7.9-15.8 1.5-35-14.3-42.9s-35-1.5-42.9 14.3L13.5 189.4C4.6 207.2 0 226.8 0 246.7L0 256c0 70.7 57.3 128 128 128l72 0 8 0 0-.3c35.2-2.7 65.4-22.8 82.1-51.7c8.8-15.3 3.6-34.9-11.7-43.7s-34.9-3.6-43.7 11.7c-7 12-19.9 20-34.7 20c-22.1 0-40-17.9-40-40s17.9-40 40-40c14.8 0 27.7 8 34.7 20c8.8 15.3 28.4 20.5 43.7 11.7s20.5-28.4 11.7-43.7c-12.8-22.1-33.6-39.1-58.4-47.1l80.8-22c17-4.6 27.1-22.2 22.5-39.3s-22.2-27.1-39.3-22.5L194.9 124.6l81.6-68c13.6-11.3 15.4-31.5 4.1-45.1S249.1-3.9 235.5 7.4L133.6 92.3l23-46zM483.4 465.7c-7.9 15.8-1.5 35 14.3 42.9s35 1.5 42.9-14.3l85.9-171.7c8.9-17.8 13.5-37.4 13.5-57.2l0-9.3c0-70.7-57.3-128-128-128l-72 0-8 0 0 .3c-35.2 2.7-65.4 22.8-82.1 51.7c-8.9 15.3-3.6 34.9 11.7 43.7s34.9 3.6 43.7-11.7c7-12 19.9-20 34.7-20c22.1 0 40 17.9 40 40s-17.9 40-40 40c-14.8 0-27.7-8-34.7-20c-8.9-15.3-28.4-20.5-43.7-11.7s-20.5 28.4-11.7 43.7c12.8 22.1 33.6 39.1 58.4 47.1l-80.8 22c-17.1 4.7-27.1 22.2-22.5 39.3s22.2 27.1 39.3 22.5l100.7-27.5-81.6 68c-13.6 11.3-15.4 31.5-4.1 45.1s31.5 15.4 45.1 4.1l101.9-84.9-23 46z"],
12971
+ "sun": [512, 512, [], "regular", "M375.7 19.7c-1.5-8-6.9-14.7-14.4-17.8s-16.1-2.2-22.8 2.4L256 61.1 173.5 4.2c-6.7-4.6-15.3-5.5-22.8-2.4s-12.9 9.8-14.4 17.8l-18.1 98.5L19.7 136.3c-8 1.5-14.7 6.9-17.8 14.4s-2.2 16.1 2.4 22.8L61.1 256 4.2 338.5c-4.6 6.7-5.5 15.3-2.4 22.8s9.8 13 17.8 14.4l98.5 18.1 18.1 98.5c1.5 8 6.9 14.7 14.4 17.8s16.1 2.2 22.8-2.4L256 450.9l82.5 56.9c6.7 4.6 15.3 5.5 22.8 2.4s12.9-9.8 14.4-17.8l18.1-98.5 98.5-18.1c8-1.5 14.7-6.9 17.8-14.4s2.2-16.1-2.4-22.8L450.9 256l56.9-82.5c4.6-6.7 5.5-15.3 2.4-22.8s-9.8-12.9-17.8-14.4l-98.5-18.1L375.7 19.7zM269.6 110l65.6-45.2 14.4 78.3c1.8 9.8 9.5 17.5 19.3 19.3l78.3 14.4L402 242.4c-5.7 8.2-5.7 19 0 27.2l45.2 65.6-78.3 14.4c-9.8 1.8-17.5 9.5-19.3 19.3l-14.4 78.3L269.6 402c-8.2-5.7-19-5.7-27.2 0l-65.6 45.2-14.4-78.3c-1.8-9.8-9.5-17.5-19.3-19.3L64.8 335.2 110 269.6c5.7-8.2 5.7-19 0-27.2L64.8 176.8l78.3-14.4c9.8-1.8 17.5-9.5 19.3-19.3l14.4-78.3L242.4 110c8.2 5.7 19 5.7 27.2 0zM256 368a112 112 0 1 0 0-224 112 112 0 1 0 0 224zM192 256a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z"],
12972
+ "moon": [384, 512, [], "regular", "M144.7 98.7c-21 34.1-33.1 74.3-33.1 117.3c0 98 62.8 181.4 150.4 211.7c-12.4 2.8-25.3 4.3-38.6 4.3C126.6 432 48 353.3 48 256c0-68.9 39.4-128.4 96.8-157.3zm62.1-66C91.1 41.2 0 137.9 0 256C0 379.7 100 480 223.5 480c47.8 0 92-15 128.4-40.6c1.9-1.3 3.7-2.7 5.5-4c4.8-3.6 9.4-7.4 13.9-11.4c2.7-2.4 5.3-4.8 7.9-7.3c5-4.9 6.3-12.5 3.1-18.7s-10.1-9.7-17-8.5c-3.7 .6-7.4 1.2-11.1 1.6c-5 .5-10.1 .9-15.3 1c-1.2 0-2.5 0-3.7 0l-.3 0c-96.8-.2-175.2-78.9-175.2-176c0-54.8 24.9-103.7 64.1-136c1-.9 2.1-1.7 3.2-2.6c4-3.2 8.2-6.2 12.5-9c3.1-2 6.3-4 9.6-5.8c6.1-3.5 9.2-10.5 7.7-17.3s-7.3-11.9-14.3-12.5c-3.6-.3-7.1-.5-10.7-.6c-2.7-.1-5.5-.1-8.2-.1c-3.3 0-6.5 .1-9.8 .2c-2.3 .1-4.6 .2-6.9 .4z"],
12973
+ "heart": [512, 512, [], "regular", "M225.8 468.2l-2.5-2.3L48.1 303.2C17.4 274.7 0 234.7 0 192.8l0-3.3c0-70.4 50-130.8 119.2-144C158.6 37.9 198.9 47 231 69.6c9 6.4 17.4 13.8 25 22.3c4.2-4.8 8.7-9.2 13.5-13.3c3.7-3.2 7.5-6.2 11.5-9c0 0 0 0 0 0C313.1 47 353.4 37.9 392.8 45.4C462 58.6 512 119.1 512 189.5l0 3.3c0 41.9-17.4 81.9-48.1 110.4L288.7 465.9l-2.5 2.3c-8.2 7.6-19 11.9-30.2 11.9s-22-4.2-30.2-11.9zM239.1 145c-.4-.3-.7-.7-1-1.1l-17.8-20-.1-.1s0 0 0 0c-23.1-25.9-58-37.7-92-31.2C81.6 101.5 48 142.1 48 189.5l0 3.3c0 28.5 11.9 55.8 32.8 75.2L256 430.7 431.2 268c20.9-19.4 32.8-46.7 32.8-75.2l0-3.3c0-47.3-33.6-88-80.1-96.9c-34-6.5-69 5.4-92 31.2c0 0 0 0-.1 .1s0 0-.1 .1l-17.8 20c-.3 .4-.7 .7-1 1.1c-4.5 4.5-10.6 7-16.9 7s-12.4-2.5-16.9-7z"],
12974
+ "xmark": [384, 512, [], "solid", "M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z"],
12975
+ "wand-sparkles": [512, 512, [], "solid", "M464 6.1c9.5-8.5 24-8.1 33 .9l8 8c9 9 9.4 23.5 .9 33l-85.8 95.9c-2.6 2.9-4.1 6.7-4.1 10.7l0 21.4c0 8.8-7.2 16-16 16l-15.8 0c-4.6 0-8.9 1.9-11.9 5.3L100.7 500.9C94.3 508 85.3 512 75.8 512c-8.8 0-17.3-3.5-23.5-9.8L9.7 459.7C3.5 453.4 0 445 0 436.2c0-9.5 4-18.5 11.1-24.8l111.6-99.8c3.4-3 5.3-7.4 5.3-11.9l0-27.6c0-8.8 7.2-16 16-16l34.6 0c3.9 0 7.7-1.5 10.7-4.1L464 6.1zM432 288c3.6 0 6.7 2.4 7.7 5.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8-14.8 51.7c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8l-14.8-51.7-51.7-14.8c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8 14.8-51.7c1-3.4 4.1-5.8 7.7-5.8zM87.7 69.8l14.8 51.7 51.7 14.8c3.4 1 5.8 4.1 5.8 7.7s-2.4 6.7-5.8 7.7l-51.7 14.8L87.7 218.2c-1 3.4-4.1 5.8-7.7 5.8s-6.7-2.4-7.7-5.8L57.5 166.5 5.8 151.7c-3.4-1-5.8-4.1-5.8-7.7s2.4-6.7 5.8-7.7l51.7-14.8L72.3 69.8c1-3.4 4.1-5.8 7.7-5.8s6.7 2.4 7.7 5.8zM208 0c3.7 0 6.9 2.5 7.8 6.1l6.8 27.3 27.3 6.8c3.6 .9 6.1 4.1 6.1 7.8s-2.5 6.9-6.1 7.8l-27.3 6.8-6.8 27.3c-.9 3.6-4.1 6.1-7.8 6.1s-6.9-2.5-7.8-6.1l-6.8-27.3-27.3-6.8c-3.6-.9-6.1-4.1-6.1-7.8s2.5-6.9 6.1-7.8l27.3-6.8 6.8-27.3c.9-3.6 4.1-6.1 7.8-6.1z"],
12976
+ "star": [576, 512, [], "regular", "M287.9 0c9.2 0 17.6 5.2 21.6 13.5l68.6 141.3 153.2 22.6c9 1.3 16.5 7.6 19.3 16.3s.5 18.1-5.9 24.5L433.6 328.4l26.2 155.6c1.5 9-2.2 18.1-9.7 23.5s-17.3 6-25.3 1.7l-137-73.2L151 509.1c-8.1 4.3-17.9 3.7-25.3-1.7s-11.2-14.5-9.7-23.5l26.2-155.6L31.1 218.2c-6.5-6.4-8.7-15.9-5.9-24.5s10.3-14.9 19.3-16.3l153.2-22.6L266.3 13.5C270.4 5.2 278.7 0 287.9 0zm0 79L235.4 187.2c-3.5 7.1-10.2 12.1-18.1 13.3L99 217.9 184.9 303c5.5 5.5 8.1 13.3 6.8 21L171.4 443.7l105.2-56.2c7.1-3.8 15.6-3.8 22.6 0l105.2 56.2L384.2 324.1c-1.3-7.7 1.2-15.5 6.8-21l85.9-85.1L358.6 200.5c-7.8-1.2-14.6-6.1-18.1-13.3L287.9 79z"],
12977
+ "puzzle-piece": [512, 512, [], "solid", "M192 104.8c0-9.2-5.8-17.3-13.2-22.8C167.2 73.3 160 61.3 160 48c0-26.5 28.7-48 64-48s64 21.5 64 48c0 13.3-7.2 25.3-18.8 34c-7.4 5.5-13.2 13.6-13.2 22.8c0 12.8 10.4 23.2 23.2 23.2l56.8 0c26.5 0 48 21.5 48 48l0 56.8c0 12.8 10.4 23.2 23.2 23.2c9.2 0 17.3-5.8 22.8-13.2c8.7-11.6 20.7-18.8 34-18.8c26.5 0 48 28.7 48 64s-21.5 64-48 64c-13.3 0-25.3-7.2-34-18.8c-5.5-7.4-13.6-13.2-22.8-13.2c-12.8 0-23.2 10.4-23.2 23.2L384 464c0 26.5-21.5 48-48 48l-56.8 0c-12.8 0-23.2-10.4-23.2-23.2c0-9.2 5.8-17.3 13.2-22.8c11.6-8.7 18.8-20.7 18.8-34c0-26.5-28.7-48-64-48s-64 21.5-64 48c0 13.3 7.2 25.3 18.8 34c7.4 5.5 13.2 13.6 13.2 22.8c0 12.8-10.4 23.2-23.2 23.2L48 512c-26.5 0-48-21.5-48-48L0 343.2C0 330.4 10.4 320 23.2 320c9.2 0 17.3 5.8 22.8 13.2C54.7 344.8 66.7 352 80 352c26.5 0 48-28.7 48-64s-21.5-64-48-64c-13.3 0-25.3 7.2-34 18.8C40.5 250.2 32.4 256 23.2 256C10.4 256 0 245.6 0 232.8L0 176c0-26.5 21.5-48 48-48l120.8 0c12.8 0 23.2-10.4 23.2-23.2z"],
12978
+ // brands
12979
+ "discord": [640, 512, [], "brands", "M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z"],
12980
+ "github": [496, 512, [], "brands", "M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"],
12981
+ "square-js": [448, 512, [], "brands", "M448 96c0-35.3-28.7-64-64-64H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H384c35.3 0 64-28.7 64-64V96zM180.9 444.9c-33.7 0-53.2-17.4-63.2-38.5L152 385.7c6.6 11.7 12.6 21.6 27.1 21.6c13.8 0 22.6-5.4 22.6-26.5V237.7h42.1V381.4c0 43.6-25.6 63.5-62.9 63.5zm85.8-43L301 382.1c9 14.7 20.8 25.6 41.5 25.6c17.4 0 28.6-8.7 28.6-20.8c0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5c0-31.6 24.1-55.6 61.6-55.6c26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18c-12.3 0-20.1 7.8-20.1 18c0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2c0 37.8-29.8 58.6-69.7 58.6c-39.1 0-64.4-18.6-76.7-43z"],
12982
+ "python": [448, 512, [], "brands", "M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z"],
12983
+ "microsoft": [448, 512, [], "brands", "M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z"],
12984
+ "apple": [384, 512, [], "brands", "M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z"],
12985
+ "youtube": [576, 512, [], "brands", "M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"],
12986
+ "x-twitter": [512, 512, [], "brands", "M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"],
12987
+ "chrome": [512, 512, [], "brands", "M0 256C0 209.4 12.47 165.6 34.27 127.1L144.1 318.3C166 357.5 207.9 384 256 384C270.3 384 283.1 381.7 296.8 377.4L220.5 509.6C95.9 492.3 0 385.3 0 256zM365.1 321.6C377.4 302.4 384 279.1 384 256C384 217.8 367.2 183.5 340.7 160H493.4C505.4 189.6 512 222.1 512 256C512 397.4 397.4 511.1 256 512L365.1 321.6zM477.8 128H256C193.1 128 142.3 172.1 130.5 230.7L54.19 98.47C101 38.53 174 0 256 0C350.8 0 433.5 51.48 477.8 128V128zM168 256C168 207.4 207.4 168 256 168C304.6 168 344 207.4 344 256C344 304.6 304.6 344 256 344C207.4 344 168 304.6 168 256z"],
12988
+ "reddit": [512, 512, [], "brands", "M0 256C0 114.6 114.6 0 256 0S512 114.6 512 256s-114.6 256-256 256L37.1 512c-13.7 0-20.5-16.5-10.9-26.2L75 437C28.7 390.7 0 326.7 0 256zM349.6 153.6c23.6 0 42.7-19.1 42.7-42.7s-19.1-42.7-42.7-42.7c-20.6 0-37.8 14.6-41.8 34c-34.5 3.7-61.4 33-61.4 68.4l0 .2c-37.5 1.6-71.8 12.3-99 29.1c-10.1-7.8-22.8-12.5-36.5-12.5c-33 0-59.8 26.8-59.8 59.8c0 24 14.1 44.6 34.4 54.1c2 69.4 77.6 125.2 170.6 125.2s168.7-55.9 170.6-125.3c20.2-9.6 34.1-30.2 34.1-54c0-33-26.8-59.8-59.8-59.8c-13.7 0-26.3 4.6-36.4 12.4c-27.4-17-62.1-27.7-100-29.1l0-.2c0-25.4 18.9-46.5 43.4-49.9l0 0c4.4 18.8 21.3 32.8 41.5 32.8zM177.1 246.9c16.7 0 29.5 17.6 28.5 39.3s-13.5 29.6-30.3 29.6s-31.4-8.8-30.4-30.5s15.4-38.3 32.1-38.3zm190.1 38.3c1 21.7-13.7 30.5-30.4 30.5s-29.3-7.9-30.3-29.6c-1-21.7 11.8-39.3 28.5-39.3s31.2 16.6 32.1 38.3zm-48.1 56.7c-10.3 24.6-34.6 41.9-63 41.9s-52.7-17.3-63-41.9c-1.2-2.9 .8-6.2 3.9-6.5c18.4-1.9 38.3-2.9 59.1-2.9s40.7 1 59.1 2.9c3.1 .3 5.1 3.6 3.9 6.5z"],
12989
+ "ubuntu": [576, 512, [], "brands", "M469.2 75A75.6 75.6 0 1 0 317.9 75a75.6 75.6 0 1 0 151.2 0zM154.2 240.7A75.6 75.6 0 1 0 3 240.7a75.6 75.6 0 1 0 151.2 0zM57 346C75.6 392.9 108 433 150 461.1s91.5 42.6 142 41.7c-14.7-18.6-22.9-41.5-23.2-65.2c-6.8-.9-13.3-2.1-19.5-3.4c-26.8-5.7-51.9-17.3-73.6-34s-39.3-38.1-51.7-62.5c-20.9 9.9-44.5 12.8-67.1 8.2zm395.1 89.8a75.6 75.6 0 1 0 -151.2 0 75.6 75.6 0 1 0 151.2 0zM444 351.6c18.5 14.8 31.6 35.2 37.2 58.2c33.3-41.3 52.6-92.2 54.8-145.2s-12.5-105.4-42.2-149.4c-8.6 21.5-24 39.6-43.8 51.6c15.4 28.6 22.9 60.8 21.9 93.2s-10.7 64-28 91.6zM101.1 135.4c12.4 2.7 24.3 7.5 35.1 14.3c16.6-24.2 38.9-44.1 64.8-58S255.8 70.4 285.2 70c.2-5.9 .9-11.9 2-17.7c3.6-16.7 11.1-32.3 21.8-45.5c-47.7-3.8-95.4 6-137.6 28.5S94.3 91.7 70.8 133.4c2.7-.2 5.3-.3 8-.3c7.5 0 15 .8 22.4 2.3z"],
12990
+ "whatsapp": [448, 512, [], "brands", "M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z"],
12991
+ "linux": [448, 512, [], "brands", "M220.8 123.3c1 .5 1.8 1.7 3 1.7 1.1 0 2.8-.4 2.9-1.5.2-1.4-1.9-2.3-3.2-2.9-1.7-.7-3.9-1-5.5-.1-.4.2-.8.7-.6 1.1.3 1.3 2.3 1.1 3.4 1.7zm-21.9 1.7c1.2 0 2-1.2 3-1.7 1.1-.6 3.1-.4 3.5-1.6.2-.4-.2-.9-.6-1.1-1.6-.9-3.8-.6-5.5.1-1.3.6-3.4 1.5-3.2 2.9.1 1 1.8 1.5 2.8 1.4zM420 403.8c-3.6-4-5.3-11.6-7.2-19.7-1.8-8.1-3.9-16.8-10.5-22.4-1.3-1.1-2.6-2.1-4-2.9-1.3-.8-2.7-1.5-4.1-2 9.2-27.3 5.6-54.5-3.7-79.1-11.4-30.1-31.3-56.4-46.5-74.4-17.1-21.5-33.7-41.9-33.4-72C311.1 85.4 315.7.1 234.8 0 132.4-.2 158 103.4 156.9 135.2c-1.7 23.4-6.4 41.8-22.5 64.7-18.9 22.5-45.5 58.8-58.1 96.7-6 17.9-8.8 36.1-6.2 53.3-6.5 5.8-11.4 14.7-16.6 20.2-4.2 4.3-10.3 5.9-17 8.3s-14 6-18.5 14.5c-2.1 3.9-2.8 8.1-2.8 12.4 0 3.9.6 7.9 1.2 11.8 1.2 8.1 2.5 15.7.8 20.8-5.2 14.4-5.9 24.4-2.2 31.7 3.8 7.3 11.4 10.5 20.1 12.3 17.3 3.6 40.8 2.7 59.3 12.5 19.8 10.4 39.9 14.1 55.9 10.4 11.6-2.6 21.1-9.6 25.9-20.2 12.5-.1 26.3-5.4 48.3-6.6 14.9-1.2 33.6 5.3 55.1 4.1.6 2.3 1.4 4.6 2.5 6.7v.1c8.3 16.7 23.8 24.3 40.3 23 16.6-1.3 34.1-11 48.3-27.9 13.6-16.4 36-23.2 50.9-32.2 7.4-4.5 13.4-10.1 13.9-18.3.4-8.2-4.4-17.3-15.5-29.7zM223.7 87.3c9.8-22.2 34.2-21.8 44-.4 6.5 14.2 3.6 30.9-4.3 40.4-1.6-.8-5.9-2.6-12.6-4.9 1.1-1.2 3.1-2.7 3.9-4.6 4.8-11.8-.2-27-9.1-27.3-7.3-.5-13.9 10.8-11.8 23-4.1-2-9.4-3.5-13-4.4-1-6.9-.3-14.6 2.9-21.8zM183 75.8c10.1 0 20.8 14.2 19.1 33.5-3.5 1-7.1 2.5-10.2 4.6 1.2-8.9-3.3-20.1-9.6-19.6-8.4.7-9.8 21.2-1.8 28.1 1 .8 1.9-.2-5.9 5.5-15.6-14.6-10.5-52.1 8.4-52.1zm-13.6 60.7c6.2-4.6 13.6-10 14.1-10.5 4.7-4.4 13.5-14.2 27.9-14.2 7.1 0 15.6 2.3 25.9 8.9 6.3 4.1 11.3 4.4 22.6 9.3 8.4 3.5 13.7 9.7 10.5 18.2-2.6 7.1-11 14.4-22.7 18.1-11.1 3.6-19.8 16-38.2 14.9-3.9-.2-7-1-9.6-2.1-8-3.5-12.2-10.4-20-15-8.6-4.8-13.2-10.4-14.7-15.3-1.4-4.9 0-9 4.2-12.3zm3.3 334c-2.7 35.1-43.9 34.4-75.3 18-29.9-15.8-68.6-6.5-76.5-21.9-2.4-4.7-2.4-12.7 2.6-26.4v-.2c2.4-7.6.6-16-.6-23.9-1.2-7.8-1.8-15 .9-20 3.5-6.7 8.5-9.1 14.8-11.3 10.3-3.7 11.8-3.4 19.6-9.9 5.5-5.7 9.5-12.9 14.3-18 5.1-5.5 10-8.1 17.7-6.9 8.1 1.2 15.1 6.8 21.9 16l19.6 35.6c9.5 19.9 43.1 48.4 41 68.9zm-1.4-25.9c-4.1-6.6-9.6-13.6-14.4-19.6 7.1 0 14.2-2.2 16.7-8.9 2.3-6.2 0-14.9-7.4-24.9-13.5-18.2-38.3-32.5-38.3-32.5-13.5-8.4-21.1-18.7-24.6-29.9s-3-23.3-.3-35.2c5.2-22.9 18.6-45.2 27.2-59.2 2.3-1.7.8 3.2-8.7 20.8-8.5 16.1-24.4 53.3-2.6 82.4.6-20.7 5.5-41.8 13.8-61.5 12-27.4 37.3-74.9 39.3-112.7 1.1.8 4.6 3.2 6.2 4.1 4.6 2.7 8.1 6.7 12.6 10.3 12.4 10 28.5 9.2 42.4 1.2 6.2-3.5 11.2-7.5 15.9-9 9.9-3.1 17.8-8.6 22.3-15 7.7 30.4 25.7 74.3 37.2 95.7 6.1 11.4 18.3 35.5 23.6 64.6 3.3-.1 7 .4 10.9 1.4 13.8-35.7-11.7-74.2-23.3-84.9-4.7-4.6-4.9-6.6-2.6-6.5 12.6 11.2 29.2 33.7 35.2 59 2.8 11.6 3.3 23.7.4 35.7 16.4 6.8 35.9 17.9 30.7 34.8-2.2-.1-3.2 0-4.2 0 3.2-10.1-3.9-17.6-22.8-26.1-19.6-8.6-36-8.6-38.3 12.5-12.1 4.2-18.3 14.7-21.4 27.3-2.8 11.2-3.6 24.7-4.4 39.9-.5 7.7-3.6 18-6.8 29-32.1 22.9-76.7 32.9-114.3 7.2zm257.4-11.5c-.9 16.8-41.2 19.9-63.2 46.5-13.2 15.7-29.4 24.4-43.6 25.5s-26.5-4.8-33.7-19.3c-4.7-11.1-2.4-23.1 1.1-36.3 3.7-14.2 9.2-28.8 9.9-40.6.8-15.2 1.7-28.5 4.2-38.7 2.6-10.3 6.6-17.2 13.7-21.1.3-.2.7-.3 1-.5.8 13.2 7.3 26.6 18.8 29.5 12.6 3.3 30.7-7.5 38.4-16.3 9-.3 15.7-.9 22.6 5.1 9.9 8.5 7.1 30.3 17.1 41.6 10.6 11.6 14 19.5 13.7 24.6zM173.3 148.7c2 1.9 4.7 4.5 8 7.1 6.6 5.2 15.8 10.6 27.3 10.6 11.6 0 22.5-5.9 31.8-10.8 4.9-2.6 10.9-7 14.8-10.4s5.9-6.3 3.1-6.6-2.6 2.6-6 5.1c-4.4 3.2-9.7 7.4-13.9 9.8-7.4 4.2-19.5 10.2-29.9 10.2s-18.7-4.8-24.9-9.7c-3.1-2.5-5.7-5-7.7-6.9-1.5-1.4-1.9-4.6-4.3-4.9-1.4-.1-1.8 3.7 1.7 6.5z"],
12992
+ "instagram": [448, 512, [], "brands", "M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"],
12993
+ "facebook": [512, 512, [], "brands", "M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256C0 376 82.7 476.8 194.2 504.5V334.2H141.4V256h52.8V222.3c0-87.1 39.4-127.5 125-127.5c16.2 0 44.2 3.2 55.7 6.4V172c-6-.6-16.5-1-29.6-1c-42 0-58.2 15.9-58.2 57.2V256h83.6l-14.4 78.2H287V510.1C413.8 494.8 512 386.9 512 256h0z"],
12994
+ "safari": [512, 512, [], "brands", "M274.69,274.69l-37.38-37.38L166,346ZM256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8ZM411.85,182.79l14.78-6.13A8,8,0,0,1,437.08,181h0a8,8,0,0,1-4.33,10.46L418,197.57a8,8,0,0,1-10.45-4.33h0A8,8,0,0,1,411.85,182.79ZM314.43,94l6.12-14.78A8,8,0,0,1,331,74.92h0a8,8,0,0,1,4.33,10.45l-6.13,14.78a8,8,0,0,1-10.45,4.33h0A8,8,0,0,1,314.43,94ZM256,60h0a8,8,0,0,1,8,8V84a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V68A8,8,0,0,1,256,60ZM181,74.92a8,8,0,0,1,10.46,4.33L197.57,94a8,8,0,1,1-14.78,6.12l-6.13-14.78A8,8,0,0,1,181,74.92Zm-63.58,42.49h0a8,8,0,0,1,11.31,0L140,128.72A8,8,0,0,1,140,140h0a8,8,0,0,1-11.31,0l-11.31-11.31A8,8,0,0,1,117.41,117.41ZM60,256h0a8,8,0,0,1,8-8H84a8,8,0,0,1,8,8h0a8,8,0,0,1-8,8H68A8,8,0,0,1,60,256Zm40.15,73.21-14.78,6.13A8,8,0,0,1,74.92,331h0a8,8,0,0,1,4.33-10.46L94,314.43a8,8,0,0,1,10.45,4.33h0A8,8,0,0,1,100.15,329.21Zm4.33-136h0A8,8,0,0,1,94,197.57l-14.78-6.12A8,8,0,0,1,74.92,181h0a8,8,0,0,1,10.45-4.33l14.78,6.13A8,8,0,0,1,104.48,193.24ZM197.57,418l-6.12,14.78a8,8,0,0,1-14.79-6.12l6.13-14.78A8,8,0,1,1,197.57,418ZM264,444a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V428a8,8,0,0,1,8-8h0a8,8,0,0,1,8,8Zm67-6.92h0a8,8,0,0,1-10.46-4.33L314.43,418a8,8,0,0,1,4.33-10.45h0a8,8,0,0,1,10.45,4.33l6.13,14.78A8,8,0,0,1,331,437.08Zm63.58-42.49h0a8,8,0,0,1-11.31,0L372,383.28A8,8,0,0,1,372,372h0a8,8,0,0,1,11.31,0l11.31,11.31A8,8,0,0,1,394.59,394.59ZM286.25,286.25,110.34,401.66,225.75,225.75,401.66,110.34ZM437.08,331h0a8,8,0,0,1-10.45,4.33l-14.78-6.13a8,8,0,0,1-4.33-10.45h0A8,8,0,0,1,418,314.43l14.78,6.12A8,8,0,0,1,437.08,331ZM444,264H428a8,8,0,0,1-8-8h0a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8h0A8,8,0,0,1,444,264Z"],
12995
+ "google": [488, 512, [], "brands", "M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z"],
12996
+ "npm": [576, 512, [], "brands", "M288 288h-32v-64h32v64zm288-128v192H288v32H160v-32H0V160h576zm-416 32H32v128h64v-96h32v96h32V192zm160 0H192v160h64v-32h64V192zm224 0H352v128h64v-96h32v96h32v-96h32v96h32V192z"],
12997
+ "bluetooth-b": [320, 512, [], "brands", "M196.48 260.023l92.626-103.333L143.125 0v206.33l-86.111-86.111-31.406 31.405 108.061 108.399L25.608 368.422l31.406 31.405 86.111-86.111L145.84 512l148.552-148.644-97.912-103.333zm40.86-102.996l-49.977 49.978-.338-100.295 50.315 50.317zM187.363 313.04l49.977 49.978-50.315 50.316.338-100.294z"],
12998
+ // Some Aliases
12999
+ "vr": "vr-cardboard",
13000
+ "sticky-note": "note-sticky",
13001
+ "script": "scroll",
13002
+ "save": "floppy-disk",
13003
+ "media": "photo-film",
13004
+ "arrows-up-down-left-right": "arrows",
13005
+ "rotate-forward": "rotate-right",
13006
+ "rotate-back": "rotate-left",
13007
+ "cc": "closed-captioning",
13008
+ "asl": "hands-asl-interpreting",
13009
+ }
13010
+
12662
13011
  export { LX };