lexgui 0.7.15 → 8.1.0
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.
- package/LICENSE +201 -21
- package/README.md +14 -5
- package/build/components/AlertDialog.d.ts +7 -0
- package/build/components/ArrayInput.d.ts +9 -0
- package/build/components/BaseComponent.d.ts +73 -0
- package/build/components/Button.d.ts +14 -0
- package/build/components/Calendar.d.ts +41 -0
- package/build/components/CalendarRange.d.ts +16 -0
- package/build/components/CanvasCurve.d.ts +10 -0
- package/build/components/CanvasDial.d.ts +11 -0
- package/build/components/CanvasMap2D.d.ts +61 -0
- package/build/components/Card.d.ts +8 -0
- package/build/components/Checkbox.d.ts +8 -0
- package/build/components/Color.d.ts +20 -0
- package/build/components/ColorInput.d.ts +13 -0
- package/build/components/ColorPicker.d.ts +29 -0
- package/build/components/ComboButtons.d.ts +8 -0
- package/build/components/ContextMenu.d.ts +16 -0
- package/build/components/Counter.d.ts +9 -0
- package/build/components/Curve.d.ts +10 -0
- package/build/components/DatePicker.d.ts +13 -0
- package/build/components/Dial.d.ts +10 -0
- package/build/components/Dialog.d.ts +20 -0
- package/build/components/DropdownMenu.d.ts +32 -0
- package/build/components/FileInput.d.ts +8 -0
- package/build/components/Footer.d.ts +14 -0
- package/build/components/Form.d.ts +8 -0
- package/build/components/Layers.d.ts +9 -0
- package/build/components/List.d.ts +9 -0
- package/build/components/Map2D.d.ts +12 -0
- package/build/components/Menubar.d.ts +59 -0
- package/build/components/NodeTree.d.ts +26 -0
- package/build/components/NumberInput.d.ts +9 -0
- package/build/components/OTPInput.d.ts +8 -0
- package/build/components/Pad.d.ts +8 -0
- package/build/components/Pagination.d.ts +26 -0
- package/build/components/PocketDialog.d.ts +11 -0
- package/build/components/Popover.d.ts +20 -0
- package/build/components/Progress.d.ts +8 -0
- package/build/components/RadioGroup.d.ts +8 -0
- package/build/components/RangeInput.d.ts +11 -0
- package/build/components/Rate.d.ts +8 -0
- package/build/components/Select.d.ts +10 -0
- package/build/components/Sheet.d.ts +10 -0
- package/build/components/Sidebar.d.ts +84 -0
- package/build/components/SizeInput.d.ts +8 -0
- package/build/components/Skeleton.d.ts +5 -0
- package/build/components/Spinner.d.ts +9 -0
- package/build/components/TabSections.d.ts +11 -0
- package/build/components/Table.d.ts +34 -0
- package/build/components/Tabs.d.ts +20 -0
- package/build/components/Tags.d.ts +9 -0
- package/build/components/TextArea.d.ts +8 -0
- package/build/components/TextInput.d.ts +11 -0
- package/build/components/Title.d.ts +8 -0
- package/build/components/Toggle.d.ts +8 -0
- package/build/components/Tour.d.ts +36 -0
- package/build/components/Vector.d.ts +9 -0
- package/build/core/Area.d.ts +143 -0
- package/build/core/Branch.d.ts +19 -0
- package/build/core/Core.d.ts +1 -0
- package/build/core/Event.d.ts +26 -0
- package/build/core/Icons.d.ts +4 -0
- package/build/core/Namespace.d.ts +2 -0
- package/build/core/Namespace.js +34 -0
- package/build/core/Namespace.js.map +1 -0
- package/build/core/Panel.d.ts +538 -0
- package/build/core/Utils.d.ts +1 -0
- package/build/core/Vec2.d.ts +21 -0
- package/build/extensions/AssetView.d.ts +136 -0
- package/build/extensions/AssetView.js +1367 -0
- package/build/extensions/AssetView.js.map +1 -0
- package/build/extensions/Audio.d.ts +9 -0
- package/build/extensions/Audio.js +163 -0
- package/build/extensions/Audio.js.map +1 -0
- package/build/extensions/CodeEditor.d.ts +350 -0
- package/build/extensions/CodeEditor.js +5022 -0
- package/build/extensions/CodeEditor.js.map +1 -0
- package/build/extensions/DocMaker.d.ts +27 -0
- package/build/extensions/DocMaker.js +327 -0
- package/build/extensions/DocMaker.js.map +1 -0
- package/build/extensions/GraphEditor.d.ts +276 -0
- package/build/extensions/GraphEditor.js +2770 -0
- package/build/extensions/GraphEditor.js.map +1 -0
- package/build/extensions/ImUi.d.ts +46 -0
- package/build/extensions/ImUi.js +227 -0
- package/build/extensions/ImUi.js.map +1 -0
- package/build/extensions/Timeline.d.ts +670 -0
- package/build/extensions/Timeline.js +3955 -0
- package/build/extensions/Timeline.js.map +1 -0
- package/build/extensions/VideoEditor.d.ts +128 -0
- package/build/extensions/VideoEditor.js +898 -0
- package/build/extensions/VideoEditor.js.map +1 -0
- package/build/extensions/index.d.ts +8 -0
- package/build/extensions/index.js +10 -0
- package/build/extensions/index.js.map +1 -0
- package/build/index.all.d.ts +2 -0
- package/build/index.css.d.ts +4 -0
- package/build/index.d.ts +56 -0
- package/build/lexgui.all.js +28498 -0
- package/build/lexgui.all.js.map +1 -0
- package/build/lexgui.all.min.js +1 -0
- package/build/lexgui.all.module.js +28422 -0
- package/build/lexgui.all.module.js.map +1 -0
- package/build/lexgui.all.module.min.js +1 -0
- package/build/lexgui.css +939 -346
- package/build/lexgui.js +13406 -17286
- package/build/lexgui.js.map +1 -0
- package/build/lexgui.min.css +3 -10
- package/build/lexgui.min.js +1 -1
- package/build/lexgui.module.js +12762 -16698
- package/build/lexgui.module.js.map +1 -0
- package/build/lexgui.module.min.js +1 -1
- package/changelog.md +170 -74
- package/demo.js +162 -48
- package/examples/all-components.html +45 -14
- package/examples/asset-view.html +110 -47
- package/examples/code-editor.html +5 -5
- package/examples/dialogs.html +3 -3
- package/examples/editor.html +27 -13
- package/examples/index.html +19 -14
- package/examples/node-graph.html +2 -2
- package/examples/previews/video-editor.png +0 -0
- package/examples/timeline.html +1 -1
- package/examples/video-editor.html +2 -2
- package/package.json +25 -9
- package/build/extensions/audio.js +0 -212
- package/build/extensions/codeeditor.js +0 -6319
- package/build/extensions/docmaker.js +0 -432
- package/build/extensions/imui.js +0 -325
- package/build/extensions/nodegraph.js +0 -3696
- package/build/extensions/timeline.js +0 -4636
- package/build/extensions/videoeditor.js +0 -953
- package/build/lexgui-docs.css +0 -352
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lexgui.js","sources":["../src/core/Namespace.ts","../src/core/Icons.ts","../src/core/Event.ts","../src/components/BaseComponent.ts","../src/components/Button.ts","../src/components/Menubar.ts","../src/components/Tabs.ts","../src/components/NumberInput.ts","../src/components/TextInput.ts","../src/components/Select.ts","../src/components/ArrayInput.ts","../src/components/Card.ts","../src/components/Checkbox.ts","../src/components/Color.ts","../src/components/ColorPicker.ts","../src/components/Popover.ts","../src/components/ColorInput.ts","../src/components/ComboButtons.ts","../src/components/Counter.ts","../src/components/CanvasCurve.ts","../src/components/Curve.ts","../src/components/Calendar.ts","../src/components/CalendarRange.ts","../src/components/DatePicker.ts","../src/components/CanvasDial.ts","../src/components/Dial.ts","../src/components/FileInput.ts","../src/components/Form.ts","../src/components/Layers.ts","../src/components/List.ts","../src/core/Vec2.ts","../src/components/CanvasMap2D.ts","../src/components/Map2D.ts","../src/components/NodeTree.ts","../src/components/OTPInput.ts","../src/components/Pad.ts","../src/components/Progress.ts","../src/components/RadioGroup.ts","../src/components/RangeInput.ts","../src/components/Rate.ts","../src/components/SizeInput.ts","../src/components/Pagination.ts","../src/components/Table.ts","../src/components/TabSections.ts","../src/components/Tags.ts","../src/components/TextArea.ts","../src/components/Title.ts","../src/components/Toggle.ts","../src/components/Vector.ts","../src/core/Branch.ts","../src/core/Panel.ts","../src/core/Area.ts","../src/core/Utils.ts","../src/components/Spinner.ts","../src/components/Dialog.ts","../src/components/AlertDialog.ts","../src/components/ContextMenu.ts","../src/components/DropdownMenu.ts","../src/components/Footer.ts","../src/components/PocketDialog.ts","../src/components/Sheet.ts","../src/components/Sidebar.ts","../src/components/Skeleton.ts","../src/components/Tour.ts","../src/core/Core.ts"],"sourcesContent":["// Namespace.ts @jxarco\r\n\r\n/**\r\n * Main namespace\r\n * @namespace LX\r\n */\r\n\r\nconst g = globalThis as any;\r\n\r\n// Update global namespace if not present (Loading module)\r\n// Extension scripts rely on LX being globally available\r\nlet LX: any = g.LX;\r\n\r\nif ( !LX )\r\n{\r\n LX = {\r\n version: '8.1.0',\r\n ready: false,\r\n extensions: [], // Store extensions used\r\n extraCommandbarEntries: [], // User specific entries for command bar\r\n signals: {}, // Events and triggers\r\n activeDraggable: null, // Watch for the current active draggable\r\n\r\n spacingMode: 'default',\r\n layoutMode: 'app',\r\n\r\n MOUSE_LEFT_CLICK: 0,\r\n MOUSE_MIDDLE_CLICK: 1,\r\n MOUSE_RIGHT_CLICK: 2,\r\n\r\n MOUSE_DOUBLE_CLICK: 2,\r\n MOUSE_TRIPLE_CLICK: 3,\r\n\r\n CURVE_MOVEOUT_CLAMP: 0,\r\n CURVE_MOVEOUT_DELETE: 1,\r\n\r\n DRAGGABLE_Z_INDEX: 101\r\n };\r\n\r\n g.LX = LX;\r\n}\r\n\r\nexport { LX };\r\n","// Icons.ts @jxarco\r\n\r\nimport { LX } from './Namespace';\r\n\r\nconst RAW_ICONS: Record<string, any> = {\r\n // Internals\r\n 'Abc': [ 24, 24, [], 'regular',\r\n 'M17 15q-.425 0-.712-.288T16 14v-4q0-.425.288-.712T17 9h3q.425 0 .713.288T21 10v1h-1.5v-.5h-2v3h2V13H21v1q0 .425-.288.713T20 15zm-7.5 0V9h4q.425 0 .713.288T14.5 10v1q0 .425-.288.713T13.5 12q.425 0 .713.288T14.5 13v1q0 .425-.288.713T13.5 15zm1.5-3.75h2v-.75h-2zm0 2.25h2v-.75h-2zM3 15v-5q0-.425.288-.712T4 9h3q.425 0 .713.288T8 10v5H6.5v-1.5h-2V15zm1.5-3h2v-1.5h-2z' ],\r\n 'Android': [ 128, 128, [], 'solid',\r\n 'M21.005 43.003c-4.053-.002-7.338 3.291-7.339 7.341l.005 30.736a7.34 7.34 0 0 0 7.342 7.343a7.33 7.33 0 0 0 7.338-7.342V50.34a7.345 7.345 0 0 0-7.346-7.337m59.193-27.602l5.123-9.355a1.023 1.023 0 0 0-.401-1.388a1.02 1.02 0 0 0-1.382.407l-5.175 9.453c-4.354-1.938-9.227-3.024-14.383-3.019c-5.142-.005-10.013 1.078-14.349 3.005L44.45 5.075a1.01 1.01 0 0 0-1.378-.406a1.007 1.007 0 0 0-.404 1.38l5.125 9.349c-10.07 5.193-16.874 15.083-16.868 26.438l66.118-.008c.002-11.351-6.79-21.221-16.845-26.427M48.942 29.858a2.772 2.772 0 0 1 .003-5.545a2.78 2.78 0 0 1 2.775 2.774a2.776 2.776 0 0 1-2.778 2.771m30.106-.005a2.77 2.77 0 0 1-2.772-2.771a2.793 2.793 0 0 1 2.773-2.778a2.79 2.79 0 0 1 2.767 2.779a2.767 2.767 0 0 1-2.768 2.77M31.195 44.39l.011 47.635a7.82 7.82 0 0 0 7.832 7.831l5.333.002l.006 16.264c-.001 4.05 3.291 7.342 7.335 7.342c4.056 0 7.342-3.295 7.343-7.347l-.004-16.26l9.909-.003l.004 16.263c0 4.047 3.293 7.346 7.338 7.338c4.056.003 7.344-3.292 7.343-7.344l-.005-16.259l5.352-.004a7.835 7.835 0 0 0 7.836-7.834l-.009-47.635zm83.134 5.943a7.34 7.34 0 0 0-7.341-7.339c-4.053-.004-7.337 3.287-7.337 7.342l.006 30.738a7.334 7.334 0 0 0 7.339 7.339a7.337 7.337 0 0 0 7.338-7.343z' ],\r\n 'Clone': [ 512, 512, [], 'regular',\r\n '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' ],\r\n 'IdBadge': [ 384, 512, [], 'regular',\r\n 'M256 48l0 16c0 17.7-14.3 32-32 32l-64 0c-17.7 0-32-14.3-32-32l0-16L64 48c-8.8 0-16 7.2-16 16l0 384c0 8.8 7.2 16 16 16l256 0c8.8 0 16-7.2 16-16l0-384c0-8.8-7.2-16-16-16l-64 0zM0 64C0 28.7 28.7 0 64 0L320 0c35.3 0 64 28.7 64 64l0 384c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zM160 320l64 0c44.2 0 80 35.8 80 80c0 8.8-7.2 16-16 16L96 416c-8.8 0-16-7.2-16-16c0-44.2 35.8-80 80-80zm-32-96a64 64 0 1 1 128 0 64 64 0 1 1 -128 0z' ],\r\n 'Paste': [ 512, 512, [], 'regular',\r\n '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' ],\r\n 'Trash3': [ 448, 512, [], 'regular',\r\n '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' ],\r\n 'FilePdf': [ 512, 512, [], 'regular',\r\n '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' ],\r\n 'FileWord': [ 384, 512, [], 'regular',\r\n 'M48 448L48 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 464c-8.8 0-16-7.2-16-16zM64 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 0zm55 241.1c-3.8-12.7-17.2-19.9-29.9-16.1s-19.9 17.2-16.1 29.9l48 160c3 10.2 12.4 17.1 23 17.1s19.9-7 23-17.1l25-83.4 25 83.4c3 10.2 12.4 17.1 23 17.1s19.9-7 23-17.1l48-160c3.8-12.7-3.4-26.1-16.1-29.9s-26.1 3.4-29.9 16.1l-25 83.4-25-83.4c-3-10.2-12.4-17.1-23-17.1s-19.9 7-23 17.1l-25 83.4-25-83.4z' ],\r\n 'FilePowerpoint': [ 384, 512, [], 'regular',\r\n '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 0zm72 208c-13.3 0-24 10.7-24 24l0 104 0 56c0 13.3 10.7 24 24 24s24-10.7 24-24l0-32 44 0c42 0 76-34 76-76s-34-76-76-76l-68 0zm68 104l-44 0 0-56 44 0c15.5 0 28 12.5 28 28s-12.5 28-28 28z' ],\r\n 'FileExcel': [ 384, 512, [], 'regular',\r\n 'M48 448L48 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 464c-8.8 0-16-7.2-16-16zM64 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 0zm90.9 233.3c-8.1-10.5-23.2-12.3-33.7-4.2s-12.3 23.2-4.2 33.7L161.6 320l-44.5 57.3c-8.1 10.5-6.3 25.5 4.2 33.7s25.5 6.3 33.7-4.2L192 359.1l37.1 47.6c8.1 10.5 23.2 12.3 33.7 4.2s12.3-23.2 4.2-33.7L222.4 320l44.5-57.3c8.1-10.5 6.3-25.5-4.2-33.7s-25.5-6.3-33.7 4.2L192 280.9l-37.1-47.6z' ],\r\n 'Settings3': [ 640, 512, [], 'solid',\r\n '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' ],\r\n 'MessagesCircle': [ 640, 512, [], 'regular',\r\n 'M88.2 309.1c9.8-18.3 6.8-40.8-7.5-55.8C59.4 230.9 48 204 48 176c0-63.5 63.8-128 160-128s160 64.5 160 128s-63.8 128-160 128c-13.1 0-25.8-1.3-37.8-3.6c-10.4-2-21.2-.6-30.7 4.2c-4.1 2.1-8.3 4.1-12.6 6c-16 7.2-32.9 13.5-49.9 18c2.8-4.6 5.4-9.1 7.9-13.6c1.1-1.9 2.2-3.9 3.2-5.9zM208 352c114.9 0 208-78.8 208-176S322.9 0 208 0S0 78.8 0 176c0 41.8 17.2 80.1 45.9 110.3c-.9 1.7-1.9 3.5-2.8 5.1c-10.3 18.4-22.3 36.5-36.6 52.1c-6.6 7-8.3 17.2-4.6 25.9C5.8 378.3 14.4 384 24 384c43 0 86.5-13.3 122.7-29.7c4.8-2.2 9.6-4.5 14.2-6.8c15.1 3 30.9 4.5 47.1 4.5zM432 480c16.2 0 31.9-1.6 47.1-4.5c4.6 2.3 9.4 4.6 14.2 6.8C529.5 498.7 573 512 616 512c9.6 0 18.2-5.7 22-14.5c3.8-8.8 2-19-4.6-25.9c-14.2-15.6-26.2-33.7-36.6-52.1c-.9-1.7-1.9-3.4-2.8-5.1C622.8 384.1 640 345.8 640 304c0-94.4-87.9-171.5-198.2-175.8c4.1 15.2 6.2 31.2 6.2 47.8l0 .6c87.2 6.7 144 67.5 144 127.4c0 28-11.4 54.9-32.7 77.2c-14.3 15-17.3 37.6-7.5 55.8c1.1 2 2.2 4 3.2 5.9c2.5 4.5 5.2 9 7.9 13.6c-17-4.5-33.9-10.7-49.9-18c-4.3-1.9-8.5-3.9-12.6-6c-9.5-4.8-20.3-6.2-30.7-4.2c-12.1 2.4-24.8 3.6-37.8 3.6c-61.7 0-110-26.5-136.8-62.3c-16 5.4-32.8 9.4-50 11.8C279 439.8 350 480 432 480z' ],\r\n 'LinkOff': [ 640, 512, [ 'ChainBroken', 'ChainOff', 'Unlink' ], 'solid',\r\n '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.7L489.3 358.2l90.5-90.5c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114l-96 96-31.9-25C430.9 239.6 420.1 175.1 377 132c-52.2-52.3-134.5-56.2-191.3-11.7L38.8 5.1zM239 162c30.1-14.9 67.7-9.9 92.8 15.3c20 20 27.5 48.3 21.7 74.5L239 162zM406.6 416.4L220.9 270c-2.1 39.8 12.2 80.1 42.2 110c38.9 38.9 94.4 51 143.6 36.3zm-290-228.5L60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5l61.8-61.8-50.6-39.9z' ],\r\n 'StreetView': [ 512, 512, [], 'solid',\r\n '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' ],\r\n 'ClosedCaptioning': [ 576, 512, [ 'CC' ], 'regular',\r\n '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' ],\r\n 'ChildReaching': [ 384, 512, [], 'solid',\r\n 'M256 64A64 64 0 1 0 128 64a64 64 0 1 0 128 0zM152.9 169.3c-23.7-8.4-44.5-24.3-58.8-45.8L74.6 94.2C64.8 79.5 45 75.6 30.2 85.4s-18.7 29.7-8.9 44.4L40.9 159c18.1 27.1 42.8 48.4 71.1 62.4L112 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96 32 0 0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-258.4c29.1-14.2 54.4-36.2 72.7-64.2l18.2-27.9c9.6-14.8 5.4-34.6-9.4-44.3s-34.6-5.5-44.3 9.4L291 122.4c-21.8 33.4-58.9 53.6-98.8 53.6c-12.6 0-24.9-2-36.6-5.8c-.9-.3-1.8-.7-2.7-.9z' ],\r\n 'HourglassHalf': [ 384, 512, [], 'regular',\r\n 'M0 24C0 10.7 10.7 0 24 0L360 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-8 0 0 19c0 40.3-16 79-44.5 107.5L225.9 256l81.5 81.5C336 366 352 404.7 352 445l0 19 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L24 512c-13.3 0-24-10.7-24-24s10.7-24 24-24l8 0 0-19c0-40.3 16-79 44.5-107.5L158.1 256 76.5 174.5C48 146 32 107.3 32 67l0-19-8 0C10.7 48 0 37.3 0 24zM110.5 371.5c-3.9 3.9-7.5 8.1-10.7 12.5l184.4 0c-3.2-4.4-6.8-8.6-10.7-12.5L192 289.9l-81.5 81.5zM284.2 128C297 110.4 304 89 304 67l0-19L80 48l0 19c0 22.1 7 43.4 19.8 61l184.4 0z' ],\r\n 'PaperPlane': [ 512, 512, [], 'regular',\r\n 'M16.1 260.2c-22.6 12.9-20.5 47.3 3.6 57.3L160 376l0 103.3c0 18.1 14.6 32.7 32.7 32.7c9.7 0 18.9-4.3 25.1-11.8l62-74.3 123.9 51.6c18.9 7.9 40.8-4.5 43.9-24.7l64-416c1.9-12.1-3.4-24.3-13.5-31.2s-23.3-7.5-34-1.4l-448 256zm52.1 25.5L409.7 90.6 190.1 336l1.2 1L68.2 285.7zM403.3 425.4L236.7 355.9 450.8 116.6 403.3 425.4z' ],\r\n 'Axis3DArrows': [ 24, 24, [], 'solid',\r\n 'm12 2l4 4h-3v7.85l6.53 3.76L21 15.03l1.5 5.47l-5.5 1.46l1.53-2.61L12 15.58l-6.53 3.77L7 21.96L1.5 20.5L3 15.03l1.47 2.58L11 13.85V6H8z' ],\r\n 'PersonWalkingDashedLineArrowRight': [ 640, 512, [], 'solid',\r\n 'M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224 384 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l146.7 0-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80zM392 0c-13.3 0-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48c0-13.3-10.7-24-24-24zm24 152c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16zM392 320c-13.3 0-24 10.7-24 24l0 16c0 13.3 10.7 24 24 24s24-10.7 24-24l0-16c0-13.3-10.7-24-24-24zm24 120c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 48c0 13.3 10.7 24 24 24s24-10.7 24-24l0-48z' ],\r\n 'PersonWalkingArrowLoopLeft': [ 640, 512, [], 'solid',\r\n 'M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zm347.7 119c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L461.3 384l18.7 0c88.4 0 160-71.6 160-160s-71.6-160-160-160L352 64c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c53 0 96 43 96 96s-43 96-96 96l-18.7 0 25.4-25.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-80 80c-12.5 12.5-12.5 32.8 0 45.3l80 80z' ],\r\n 'PersonWalkingArrowRight': [ 640, 512, [], 'solid',\r\n 'M208 96a48 48 0 1 0 0-96 48 48 0 1 0 0 96zM123.7 200.5c1-.4 1.9-.8 2.9-1.2l-16.9 63.5c-5.6 21.1-.1 43.6 14.7 59.7l70.7 77.1 22 88.1c4.3 17.1 21.7 27.6 38.8 23.3s27.6-21.7 23.3-38.8l-23-92.1c-1.9-7.8-5.8-14.9-11.2-20.8l-49.5-54 19.3-65.5 9.6 23c4.4 10.6 12.5 19.3 22.8 24.5l26.7 13.3c15.8 7.9 35 1.5 42.9-14.3s1.5-35-14.3-42.9L281 232.7l-15.3-36.8C248.5 154.8 208.3 128 163.7 128c-22.8 0-45.3 4.8-66.1 14l-8 3.5c-32.9 14.6-58.1 42.4-69.4 76.5l-2.6 7.8c-5.6 16.8 3.5 34.9 20.2 40.5s34.9-3.5 40.5-20.2l2.6-7.8c5.7-17.1 18.3-30.9 34.7-38.2l8-3.5zm-30 135.1L68.7 398 9.4 457.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L116.3 441c4.6-4.6 8.2-10.1 10.6-16.1l14.5-36.2-40.7-44.4c-2.5-2.7-4.8-5.6-7-8.6zM550.6 153.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L530.7 224 384 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l146.7 0-25.4 25.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l80-80c12.5-12.5 12.5-32.8 0-45.3l-80-80z' ],\r\n 'ClapperboardClosed': [ 512, 512, [], 'solid',\r\n 'M448 32l-86.1 0-1 1-127 127 92.1 0 1-1L453.8 32.3c-1.9-.2-3.8-.3-5.8-.3zm64 128l0-64c0-15.1-5.3-29.1-14-40l-104 104L512 160zM294.1 32l-92.1 0-1 1L73.9 160l92.1 0 1-1 127-127zM64 32C28.7 32 0 60.7 0 96l0 64 6.1 0 1-1 127-127L64 32zM512 192L0 192 0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-224z' ],\r\n 'UserOff': [ 640, 512, [], 'solid',\r\n '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.7L381.9 274c48.5-23.2 82.1-72.7 82.1-130C464 64.5 399.5 0 320 0C250.4 0 192.4 49.3 178.9 114.9L38.8 5.1zM545.5 512L528 512 284.3 320l-59 0C136.2 320 64 392.2 64 481.3c0 17 13.8 30.7 30.7 30.7l450.6 0 .3 0z' ],\r\n 'PhotoFilm': [ 640, 512, [ 'Media' ], 'solid',\r\n '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' ],\r\n 'Chart': [ 448, 512, [], 'solid',\r\n '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' ],\r\n 'HandsAslInterpreting': [ 640, 512, [ 'ASL' ], 'solid',\r\n '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' ],\r\n 'HandPointRight': [ 512, 512, [], 'regular',\r\n 'M448 128l-177.6 0c1 5.2 1.6 10.5 1.6 16l0 16 32 0 144 0c8.8 0 16-7.2 16-16s-7.2-16-16-16zM224 144c0-17.7-14.3-32-32-32c0 0 0 0 0 0l-24 0c-66.3 0-120 53.7-120 120l0 48c0 52.5 33.7 97.1 80.7 113.4c-.5-3.1-.7-6.2-.7-9.4c0-20 9.2-37.9 23.6-49.7c-4.9-9-7.6-19.4-7.6-30.3c0-15.1 5.3-29 14-40c-8.8-11-14-24.9-14-40l0-40c0-13.3 10.7-24 24-24s24 10.7 24 24l0 40c0 8.8 7.2 16 16 16s16-7.2 16-16l0-40 0-40zM192 64s0 0 0 0c18 0 34.6 6 48 16l208 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-82 0c1.3 5.1 2 10.5 2 16c0 25.3-14.7 47.2-36 57.6c2.6 7 4 14.5 4 22.4c0 20-9.2 37.9-23.6 49.7c4.9 9 7.6 19.4 7.6 30.3c0 35.3-28.7 64-64 64l-64 0-24 0C75.2 448 0 372.8 0 280l0-48C0 139.2 75.2 64 168 64l24 0zm64 336c8.8 0 16-7.2 16-16s-7.2-16-16-16l-48 0-16 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l64 0zm16-176c0 5.5-.7 10.9-2 16l2 0 32 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-32 0 0 16zm-24 64l-40 0c-8.8 0-16 7.2-16 16s7.2 16 16 16l48 0 16 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-24 0z' ],\r\n 'HandPointUp': [ 384, 512, [], 'regular',\r\n 'M64 64l0 177.6c5.2-1 10.5-1.6 16-1.6l16 0 0-32L96 64c0-8.8-7.2-16-16-16s-16 7.2-16 16zM80 288c-17.7 0-32 14.3-32 32c0 0 0 0 0 0l0 24c0 66.3 53.7 120 120 120l48 0c52.5 0 97.1-33.7 113.4-80.7c-3.1 .5-6.2 .7-9.4 .7c-20 0-37.9-9.2-49.7-23.6c-9 4.9-19.4 7.6-30.3 7.6c-15.1 0-29-5.3-40-14c-11 8.8-24.9 14-40 14l-40 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l40 0c8.8 0 16-7.2 16-16s-7.2-16-16-16l-40 0-40 0zM0 320s0 0 0 0c0-18 6-34.6 16-48L16 64C16 28.7 44.7 0 80 0s64 28.7 64 64l0 82c5.1-1.3 10.5-2 16-2c25.3 0 47.2 14.7 57.6 36c7-2.6 14.5-4 22.4-4c20 0 37.9 9.2 49.7 23.6c9-4.9 19.4-7.6 30.3-7.6c35.3 0 64 28.7 64 64l0 64 0 24c0 92.8-75.2 168-168 168l-48 0C75.2 512 0 436.8 0 344l0-24zm336-64c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 48 0 16c0 8.8 7.2 16 16 16s16-7.2 16-16l0-64zM160 240c5.5 0 10.9 .7 16 2l0-2 0-32c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 32 16 0zm64 24l0 40c0 8.8 7.2 16 16 16s16-7.2 16-16l0-48 0-16c0-8.8-7.2-16-16-16s-16 7.2-16 16l0 24z' ],\r\n 'HandPointDown': [ 384, 512, [], 'regular',\r\n 'M64 448l0-177.6c5.2 1 10.5 1.6 16 1.6l16 0 0 32 0 144c0 8.8-7.2 16-16 16s-16-7.2-16-16zM80 224c-17.7 0-32-14.3-32-32c0 0 0 0 0 0l0-24c0-66.3 53.7-120 120-120l48 0c52.5 0 97.1 33.7 113.4 80.7c-3.1-.5-6.2-.7-9.4-.7c-20 0-37.9 9.2-49.7 23.6c-9-4.9-19.4-7.6-30.3-7.6c-15.1 0-29 5.3-40 14c-11-8.8-24.9-14-40-14l-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-40 0-40 0zM0 192s0 0 0 0c0 18 6 34.6 16 48l0 208c0 35.3 28.7 64 64 64s64-28.7 64-64l0-82c5.1 1.3 10.5 2 16 2c25.3 0 47.2-14.7 57.6-36c7 2.6 14.5 4 22.4 4c20 0 37.9-9.2 49.7-23.6c9 4.9 19.4 7.6 30.3 7.6c35.3 0 64-28.7 64-64l0-64 0-24C384 75.2 308.8 0 216 0L168 0C75.2 0 0 75.2 0 168l0 24zm336 64c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48 0-16c0-8.8 7.2-16 16-16s16 7.2 16 16l0 64zM160 272c5.5 0 10.9-.7 16-2l0 2 0 32c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-32 16 0zm64-24l0-40c0-8.8 7.2-16 16-16s16 7.2 16 16l0 48 0 16c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-24z' ],\r\n 'HandPointLeft': [ 512, 512, [], 'regular',\r\n 'M64 128l177.6 0c-1 5.2-1.6 10.5-1.6 16l0 16-32 0L64 160c-8.8 0-16-7.2-16-16s7.2-16 16-16zm224 16c0-17.7 14.3-32 32-32c0 0 0 0 0 0l24 0c66.3 0 120 53.7 120 120l0 48c0 52.5-33.7 97.1-80.7 113.4c.5-3.1 .7-6.2 .7-9.4c0-20-9.2-37.9-23.6-49.7c4.9-9 7.6-19.4 7.6-30.3c0-15.1-5.3-29-14-40c8.8-11 14-24.9 14-40l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-40 0-40zm32-80s0 0 0 0c-18 0-34.6 6-48 16L64 80C28.7 80 0 108.7 0 144s28.7 64 64 64l82 0c-1.3 5.1-2 10.5-2 16c0 25.3 14.7 47.2 36 57.6c-2.6 7-4 14.5-4 22.4c0 20 9.2 37.9 23.6 49.7c-4.9 9-7.6 19.4-7.6 30.3c0 35.3 28.7 64 64 64l64 0 24 0c92.8 0 168-75.2 168-168l0-48c0-92.8-75.2-168-168-168l-24 0zM256 400c-8.8 0-16-7.2-16-16s7.2-16 16-16l48 0 16 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-64 0zM240 224c0 5.5 .7 10.9 2 16l-2 0-32 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l32 0 0 16zm24 64l40 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-48 0-16 0c-8.8 0-16-7.2-16-16s7.2-16 16-16l24 0z' ],\r\n 'HandScissors': [ 512, 512, [], 'regular',\r\n 'M.2 276.3c-1.2-35.3 26.4-65 61.7-66.2l3.3-.1L57 208.1C22.5 200.5 .7 166.3 8.3 131.8S50.2 75.5 84.7 83.2l173 38.3c2.3-2.9 4.7-5.7 7.1-8.5l18.4-20.3C299.9 74.5 323.5 64 348.3 64l10.2 0c54.1 0 104.1 28.7 131.3 75.4l1.5 2.6c13.6 23.2 20.7 49.7 20.7 76.6L512 344c0 66.3-53.7 120-120 120l-8 0-96 0c-35.3 0-64-28.7-64-64c0-2.8 .2-5.6 .5-8.3c-19.4-11-32.5-31.8-32.5-55.7c0-.8 0-1.6 0-2.4L66.4 338c-35.3 1.2-65-26.4-66.2-61.7zm63.4-18.2c-8.8 .3-15.7 7.7-15.4 16.5s7.7 15.7 16.5 15.4l161.5-5.6c9.8-.3 18.7 5.3 22.7 14.2s2.2 19.3-4.5 26.4c-2.8 2.9-4.4 6.7-4.4 11c0 8.8 7.2 16 16 16c9.1 0 17.4 5.1 21.5 13.3s3.2 17.9-2.3 25.1c-2 2.7-3.2 6-3.2 9.6c0 8.8 7.2 16 16 16l96 0 8 0c39.8 0 72-32.2 72-72l0-125.4c0-18.4-4.9-36.5-14.2-52.4l-1.5-2.6c-18.6-32-52.8-51.6-89.8-51.6l-10.2 0c-11.3 0-22 4.8-29.6 13.1l-17.5-15.9 17.5 15.9-18.4 20.3c-.6 .6-1.1 1.3-1.7 1.9l57 13.2c8.6 2 14 10.6 12 19.2s-10.6 14-19.2 12l-85.6-19.7L74.3 130c-8.6-1.9-17.2 3.5-19.1 12.2s3.5 17.2 12.2 19.1l187.5 41.6c10.2 2.3 17.8 10.9 18.7 21.4l.1 1c.6 6.6-1.5 13.1-5.8 18.1s-10.6 7.9-17.2 8.2L63.6 258.1z' ],\r\n 'HandSpock': [ 576, 512, [], 'regular',\r\n 'M170.2 80.8C161 47 180.8 12 214.6 2.4c34-9.6 69.4 10.2 79 44.2l30.3 107.1L337.1 84c6.6-34.7 40.1-57.5 74.8-50.9c31.4 6 53 33.9 52 64.9c10-2.6 20.8-2.8 31.5-.1c34.3 8.6 55.1 43.3 46.6 77.6L486.7 397.2C469.8 464.7 409.2 512 339.6 512l-33.7 0c-56.9 0-112.2-19-157.2-53.9l-92-71.6c-27.9-21.7-32.9-61.9-11.2-89.8s61.9-32.9 89.8-11.2l17 13.2L100.5 167.5c-13-32.9 3.2-70.1 36-83c11.1-4.4 22.7-5.4 33.7-3.7zm77.1-21.2c-2.4-8.5-11.2-13.4-19.7-11s-13.4 11.2-11 19.7l54.8 182.4c3.5 12.3-3.3 25.2-15.4 29.3s-25.3-2-30-13.9L174.9 138.1c-3.2-8.2-12.5-12.3-20.8-9s-12.3 12.5-9 20.8l73.3 185.6c12 30.3-23.7 57-49.4 37l-63.1-49.1c-7-5.4-17-4.2-22.5 2.8s-4.2 17 2.8 22.5l92 71.6c36.5 28.4 81.4 43.8 127.7 43.8l33.7 0c47.5 0 89-32.4 100.5-78.5l55.4-221.6c2.1-8.6-3.1-17.3-11.6-19.4s-17.3 3.1-19.4 11.6l-26 104C435.6 271.8 425 280 413 280c-16.5 0-28.9-15-25.8-31.2L415.7 99c1.7-8.7-4-17.1-12.7-18.7s-17.1 4-18.7 12.7L352.5 260c-2.2 11.6-12.4 20-24.2 20c-11 0-20.7-7.3-23.7-17.9L247.4 59.6z' ],\r\n 'HandBackFist': [ 448, 512, [ 'HandRock' ], 'regular',\r\n 'M144 64c0-8.8 7.2-16 16-16s16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16c0 9.1 5.1 17.4 13.3 21.5s17.9 3.2 25.1-2.3c2.7-2 6-3.2 9.6-3.2c8.8 0 16 7.2 16 16l0 104c0 31.3-20 58-48 67.9c-9.6 3.4-16 12.5-16 22.6L304 488c0 13.3 10.7 24 24 24s24-10.7 24-24l0-117.8c38-20.1 64-60.1 64-106.2l0-104c0-35.3-28.7-64-64-64c-2.8 0-5.6 .2-8.3 .5C332.8 77.1 311.9 64 288 64c-2.8 0-5.6 .2-8.3 .5C268.8 45.1 247.9 32 224 32c-2.8 0-5.6 .2-8.3 .5C204.8 13.1 183.9 0 160 0C124.7 0 96 28.7 96 64l0 64.3c-11.7 7.4-22.5 16.4-32 26.9l17.8 16.1L64 155.2l-9.4 10.5C40 181.8 32 202.8 32 224.6l0 12.8c0 49.6 24.2 96.1 64.8 124.5l13.8-19.7L96.8 361.9l8.9 6.2c6.9 4.8 14.4 8.6 22.3 11.3L128 488c0 13.3 10.7 24 24 24s24-10.7 24-24l0-128.1c0-12.6-9.8-23.1-22.4-23.9c-7.3-.5-14.3-2.9-20.3-7.1l-13.1 18.7 13.1-18.7-8.9-6.2C96.6 303.1 80 271.3 80 237.4l0-12.8c0-9.9 3.7-19.4 10.3-26.8l9.4-10.5c3.8-4.2 7.9-8.1 12.3-11.6l0 32.3c0 8.8 7.2 16 16 16s16-7.2 16-16l0-65.7 0-14.3 0-64z' ],\r\n 'HandLizard': [ 512, 512, [], 'regular',\r\n 'M72 112c-13.3 0-24 10.7-24 24s10.7 24 24 24l168 0c35.3 0 64 28.7 64 64s-28.7 64-64 64l-104 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l152 0c4.5 0 8.9 1.3 12.7 3.6l64 40c7 4.4 11.3 12.1 11.3 20.4l0 24c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-10.7L281.1 384 136 384c-39.8 0-72-32.2-72-72s32.2-72 72-72l104 0c8.8 0 16-7.2 16-16s-7.2-16-16-16L72 208c-39.8 0-72-32.2-72-72S32.2 64 72 64l209.6 0c46.7 0 90.9 21.5 119.7 58.3l78.4 100.1c20.9 26.7 32.3 59.7 32.3 93.7L512 424c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-107.9c0-23.2-7.8-45.8-22.1-64.1L363.5 151.9c-19.7-25.2-49.9-39.9-81.9-39.9L72 112z' ],\r\n 'HandPeace': [ 512, 512, [], 'regular',\r\n 'M250.8 1.4c-35.2-3.7-66.6 21.8-70.3 57L174 119 156.7 69.6C145 36.3 108.4 18.8 75.1 30.5S24.2 78.8 35.9 112.1L88.7 262.2C73.5 276.7 64 297.3 64 320c0 0 0 0 0 0l0 24c0 92.8 75.2 168 168 168l48 0c92.8 0 168-75.2 168-168l0-72 0-16 0-32c0-35.3-28.7-64-64-64c-7.9 0-15.4 1.4-22.4 4c-10.4-21.3-32.3-36-57.6-36c-.7 0-1.5 0-2.2 0l5.9-56.3c3.7-35.2-21.8-66.6-57-70.3zm-.2 155.4C243.9 166.9 240 179 240 192l0 48c0 .7 0 1.4 0 2c-5.1-1.3-10.5-2-16-2l-7.4 0-5.4-15.3 17-161.3c.9-8.8 8.8-15.2 17.6-14.2s15.2 8.8 14.2 17.6l-9.5 90.1zM111.4 85.6L165.7 240 144 240c-4 0-8 .3-11.9 .9L81.2 96.2c-2.9-8.3 1.5-17.5 9.8-20.4s17.5 1.5 20.4 9.8zM288 192c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32 0 16c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-48zm38.4 108c10.4 21.3 32.3 36 57.6 36c5.5 0 10.9-.7 16-2l0 10c0 66.3-53.7 120-120 120l-48 0c-66.3 0-120-53.7-120-120l0-24s0 0 0 0c0-17.7 14.3-32 32-32l80 0c8.8 0 16 7.2 16 16s-7.2 16-16 16l-40 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l40 0c35.3 0 64-28.7 64-64c0-.7 0-1.4 0-2c5.1 1.3 10.5 2 16 2c7.9 0 15.4-1.4 22.4-4zM400 272c0 8.8-7.2 16-16 16s-16-7.2-16-16l0-32 0-16c0-8.8 7.2-16 16-16s16 7.2 16 16l0 32 0 16z' ],\r\n 'Html': [ 24, 24, [], 'solid',\r\n 'm3 2l1.578 17.824L12 22l7.467-2.175L21 2zm14.049 6.048H9.075l.172 2.016h7.697l-.626 6.565l-4.246 1.381l-4.281-1.455l-.288-2.932h2.024l.16 1.411l2.4.815l2.346-.763l.297-3.005H7.416l-.562-6.05h10.412z' ],\r\n 'CircleNodes': [ 512, 512, [], 'solid',\r\n 'M418.4 157.9c35.3-8.3 61.6-40 61.6-77.9c0-44.2-35.8-80-80-80c-43.4 0-78.7 34.5-80 77.5L136.2 151.1C121.7 136.8 101.9 128 80 128c-44.2 0-80 35.8-80 80s35.8 80 80 80c12.2 0 23.8-2.7 34.1-7.6L259.7 407.8c-2.4 7.6-3.7 15.8-3.7 24.2c0 44.2 35.8 80 80 80s80-35.8 80-80c0-27.7-14-52.1-35.4-66.4l37.8-207.7zM156.3 232.2c2.2-6.9 3.5-14.2 3.7-21.7l183.8-73.5c3.6 3.5 7.4 6.7 11.6 9.5L317.6 354.1c-5.5 1.3-10.8 3.1-15.8 5.5L156.3 232.2z' ],\r\n 'CircleRight': [ 512, 512, [], 'regular',\r\n 'M464 256A208 208 0 1 1 48 256a208 208 0 1 1 416 0zM0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM294.6 151.2c-4.2-4.6-10.1-7.2-16.4-7.2C266 144 256 154 256 166.3l0 41.7-96 0c-17.7 0-32 14.3-32 32l0 32c0 17.7 14.3 32 32 32l96 0 0 41.7c0 12.3 10 22.3 22.3 22.3c6.2 0 12.1-2.6 16.4-7.2l84-91c3.5-3.8 5.4-8.7 5.4-13.9s-1.9-10.1-5.4-13.9l-84-91z' ],\r\n 'CircleUp': [ 512, 512, [], 'regular',\r\n 'M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM151.2 217.4c-4.6 4.2-7.2 10.1-7.2 16.4c0 12.3 10 22.3 22.3 22.3l41.7 0 0 96c0 17.7 14.3 32 32 32l32 0c17.7 0 32-14.3 32-32l0-96 41.7 0c12.3 0 22.3-10 22.3-22.3c0-6.2-2.6-12.1-7.2-16.4l-91-84c-3.8-3.5-8.7-5.4-13.9-5.4s-10.1 1.9-13.9 5.4l-91 84z' ],\r\n 'CircleLeft': [ 512, 512, [], 'regular',\r\n 'M48 256a208 208 0 1 1 416 0A208 208 0 1 1 48 256zm464 0A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM217.4 376.9c4.2 4.5 10.1 7.1 16.3 7.1c12.3 0 22.3-10 22.3-22.3l0-57.7 96 0c17.7 0 32-14.3 32-32l0-32c0-17.7-14.3-32-32-32l-96 0 0-57.7c0-12.3-10-22.3-22.3-22.3c-6.2 0-12.1 2.6-16.3 7.1L117.5 242.2c-3.5 3.8-5.5 8.7-5.5 13.8s2 10.1 5.5 13.8l99.9 107.1z' ],\r\n 'CircleDown': [ 512, 512, [], 'regular',\r\n 'M256 464a208 208 0 1 1 0-416 208 208 0 1 1 0 416zM256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM376.9 294.6c4.5-4.2 7.1-10.1 7.1-16.3c0-12.3-10-22.3-22.3-22.3L304 256l0-96c0-17.7-14.3-32-32-32l-32 0c-17.7 0-32 14.3-32 32l0 96-57.7 0C138 256 128 266 128 278.3c0 6.2 2.6 12.1 7.1 16.3l107.1 99.9c3.8 3.5 8.7 5.5 13.8 5.5s10.1-2 13.8-5.5l107.1-99.9z' ],\r\n 'WindowRestore': [ 512, 512, [], 'solid',\r\n 'M432 48L208 48c-17.7 0-32 14.3-32 32l0 16-48 0 0-16c0-44.2 35.8-80 80-80L432 0c44.2 0 80 35.8 80 80l0 224c0 44.2-35.8 80-80 80l-16 0 0-48 16 0c17.7 0 32-14.3 32-32l0-224c0-17.7-14.3-32-32-32zM48 448c0 8.8 7.2 16 16 16l256 0c8.8 0 16-7.2 16-16l0-192L48 256l0 192zM64 128l256 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 192c0-35.3 28.7-64 64-64z' ],\r\n 'WindowMaximize': [ 512, 512, [], 'solid',\r\n 'M.3 89.5C.1 91.6 0 93.8 0 96L0 224 0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-192 0-128c0-35.3-28.7-64-64-64L64 32c-2.2 0-4.4 .1-6.5 .3c-9.2 .9-17.8 3.8-25.5 8.2C21.8 46.5 13.4 55.1 7.7 65.5c-3.9 7.3-6.5 15.4-7.4 24zM48 224l416 0 0 192c0 8.8-7.2 16-16 16L64 432c-8.8 0-16-7.2-16-16l0-192z' ],\r\n 'WindowMinimize': [ 512, 512, [], 'solid',\r\n 'M24 432c-13.3 0-24 10.7-24 24s10.7 24 24 24l464 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 432z' ],\r\n 'VrCardboard': [ 640, 512, [ 'VR' ], 'solid',\r\n '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' ],\r\n 'C': [ 32, 32, [], 'solid',\r\n 'M29.86 8c-.224-.385-.532-.724-.871-.921L17.234.292c-.677-.391-1.787-.391-2.464 0L3.015 7.079C2.338 7.47 1.78 8.432 1.78 9.214v13.573c0 .391.14.828.364 1.213.219.385.532.724.871.917l11.749 6.791c.683.391 1.787.391 2.464 0l11.755-6.791c.339-.193.647-.532.871-.917s.359-.823.359-1.213V9.214c.005-.391-.135-.828-.353-1.213zM16 25.479c-5.229 0-9.479-4.249-9.479-9.479S10.77 6.521 16 6.521a9.51 9.51 0 0 1 8.208 4.733l-4.104 2.376A4.76 4.76 0 0 0 16 11.259c-2.615 0-4.74 2.125-4.74 4.74s2.125 4.74 4.74 4.74a4.76 4.76 0 0 0 4.104-2.371l4.104 2.376A9.51 9.51 0 0 1 16 25.479z',\r\n { svgClass: 'stroke-none' } ],\r\n 'CPlusPlus': [ 32, 32, [], 'solid',\r\n 'M29.86 8c-.224-.385-.532-.724-.871-.921L17.234.292c-.677-.391-1.787-.391-2.464 0L3.015 7.079C2.338 7.47 1.78 8.432 1.78 9.214v13.573c0 .391.14.828.364 1.213c.219.385.532.724.871.917l11.749 6.791c.683.391 1.787.391 2.464 0l11.755-6.791c.339-.193.647-.532.871-.917s.359-.823.359-1.213V9.214c.005-.391-.135-.828-.353-1.213zM16 25.479c-5.229 0-9.479-4.249-9.479-9.479S10.77 6.521 16 6.521a9.51 9.51 0 0 1 8.208 4.733l-4.104 2.376A4.76 4.76 0 0 0 16 11.259c-2.615 0-4.74 2.125-4.74 4.74s2.125 4.74 4.74 4.74a4.76 4.76 0 0 0 4.104-2.371l4.104 2.376A9.51 9.51 0 0 1 16 25.477zm9.479-8.952h-1.052v1.052H23.37v-1.052h-1.052v-1.053h1.052v-1.052h1.057v1.052h1.052zm3.948 0h-1.052v1.052h-1.052v-1.052h-1.052v-1.053h1.052v-1.052h1.052v1.052h1.052z',\r\n { svgClass: 'stroke-none' } ],\r\n 'Css': [ 24, 24, [], 'solid',\r\n 'M0 0v20.16A3.84 3.84 0 0 0 3.84 24h16.32A3.84 3.84 0 0 0 24 20.16V3.84A3.84 3.84 0 0 0 20.16 0Zm14.256 13.08c1.56 0 2.28 1.08 2.304 2.64h-1.608c.024-.288-.048-.6-.144-.84c-.096-.192-.288-.264-.552-.264c-.456 0-.696.264-.696.84c-.024.576.288.888.768 1.08c.72.288 1.608.744 1.92 1.296q.432.648.432 1.656c0 1.608-.912 2.592-2.496 2.592c-1.656 0-2.4-1.032-2.424-2.688h1.68c0 .792.264 1.176.792 1.176c.264 0 .456-.072.552-.24c.192-.312.24-1.176-.048-1.512c-.312-.408-.912-.6-1.32-.816q-.828-.396-1.224-.936c-.24-.36-.36-.888-.36-1.536c0-1.44.936-2.472 2.424-2.448m5.4 0c1.584 0 2.304 1.08 2.328 2.64h-1.608c0-.288-.048-.6-.168-.84c-.096-.192-.264-.264-.528-.264c-.48 0-.72.264-.72.84s.288.888.792 1.08c.696.288 1.608.744 1.92 1.296c.264.432.408.984.408 1.656c.024 1.608-.888 2.592-2.472 2.592c-1.68 0-2.424-1.056-2.448-2.688h1.68c0 .744.264 1.176.792 1.176c.264 0 .456-.072.552-.24c.216-.312.264-1.176-.048-1.512c-.288-.408-.888-.6-1.32-.816c-.552-.264-.96-.576-1.2-.936s-.36-.888-.36-1.536c-.024-1.44.912-2.472 2.4-2.448m-11.031.018c.711-.006 1.419.198 1.839.63c.432.432.672 1.128.648 1.992H9.336c.024-.456-.096-.792-.432-.96c-.312-.144-.768-.048-.888.24c-.12.264-.192.576-.168.864v3.504c0 .744.264 1.128.768 1.128a.65.65 0 0 0 .552-.264c.168-.24.192-.552.168-.84h1.776c.096 1.632-.984 2.712-2.568 2.688c-1.536 0-2.496-.864-2.472-2.472v-4.032c0-.816.24-1.44.696-1.848c.432-.408 1.146-.624 1.857-.63' ],\r\n 'Discord': [ 640, 512, [], 'solid',\r\n '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' ],\r\n 'Godot': [ 32, 32, [], 'solid',\r\n 'M12.745.917c-1.458.328-2.906.781-4.266 1.464a32 32 0 0 0 .266 3.505c-.526.339-1.078.63-1.568 1.026c-.5.38-1.01.75-1.464 1.198a28 28 0 0 0-2.849-1.651C1.801 7.6.812 8.834-.001 10.214c.609.99 1.25 1.911 1.938 2.792h.016v8.474a.2.2 0 0 1 .047.005l5.198.5a.554.554 0 0 1 .5.521l.161 2.292l4.531.323l.313-2.115a.56.56 0 0 1 .552-.479h5.484a.56.56 0 0 1 .552.479l.313 2.115l4.531-.323l.161-2.292a.554.554 0 0 1 .505-.521l5.193-.5c.016 0 .031-.005.047-.005v-8.474h.021a30 30 0 0 0 1.932-2.792c-.807-1.38-1.802-2.615-2.865-3.755A29 29 0 0 0 26.28 8.11c-.453-.448-.958-.818-1.458-1.198c-.495-.396-1.047-.688-1.573-1.026c.156-1.161.234-2.307.266-3.505c-1.354-.682-2.802-1.135-4.266-1.464A31 31 0 0 0 17.671 4a11 11 0 0 0-1.661-.13h-.026c-.552.005-1.109.042-1.661.13A30 30 0 0 0 12.74.917zm-4.11 12.406a3.134 3.134 0 0 1 3.13 3.135a3.13 3.13 0 1 1-6.26 0a3.134 3.134 0 0 1 3.13-3.135m14.73 0a3.134 3.134 0 0 1 3.13 3.135a3.13 3.13 0 1 1-6.26 0a3.134 3.134 0 0 1 3.13-3.135M8.932 14.568a2.076 2.076 0 1 0 0 4.151a2.077 2.077 0 0 0 2.083-2.073a2.08 2.08 0 0 0-2.083-2.078m14.131 0a2.076 2.076 0 1 0 0 4.151a2.073 2.073 0 0 0 2.078-2.073a2.074 2.074 0 0 0-2.078-2.078M16 15.172c.557 0 1.01.406 1.01.911v2.885c0 .505-.453.917-1.01.917s-1.01-.411-1.01-.917v-2.885c0-.505.453-.911 1.01-.911M1.948 22.599c0 .505.005 1.052.005 1.161c0 4.938 6.26 7.307 14.036 7.333h.021c7.776-.026 14.031-2.396 14.031-7.333l.01-1.161l-4.672.453l-.161 2.307a.556.556 0 0 1-.516.516l-5.578.396a.56.56 0 0 1-.552-.474l-.318-2.156h-4.516l-.318 2.156a.557.557 0 0 1-.594.474l-5.531-.396a.565.565 0 0 1-.521-.516l-.156-2.307l-4.672-.448z' ],\r\n 'Google': [ 488, 512, [], 'solid',\r\n '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' ],\r\n 'Go': [ 24, 24, [], 'solid',\r\n 'M1.811 10.231c-.047 0-.058-.023-.035-.059l.246-.315c.023-.035.081-.058.128-.058h4.172c.046 0 .058.035.035.07l-.199.303c-.023.036-.082.07-.117.07zM.047 11.306c-.047 0-.059-.023-.035-.058l.245-.316c.023-.035.082-.058.129-.058h5.328c.047 0 .07.035.058.07l-.093.28c-.012.047-.058.07-.105.07zm2.828 1.075c-.047 0-.059-.035-.035-.07l.163-.292c.023-.035.07-.07.117-.07h2.337c.047 0 .07.035.07.082l-.023.28c0 .047-.047.082-.082.082zm12.129-2.36c-.736.187-1.239.327-1.963.514c-.176.046-.187.058-.34-.117c-.174-.199-.303-.327-.548-.444c-.737-.362-1.45-.257-2.115.175c-.795.514-1.204 1.274-1.192 2.22c.011.935.654 1.706 1.577 1.835c.795.105 1.46-.175 1.987-.77c.105-.13.198-.27.315-.434H10.47c-.245 0-.304-.152-.222-.35c.152-.362.432-.97.596-1.274a.32.32 0 0 1 .292-.187h4.253c-.023.316-.023.631-.07.947a5 5 0 0 1-.958 2.29c-.841 1.11-1.94 1.8-3.33 1.986c-1.145.152-2.209-.07-3.143-.77c-.865-.655-1.356-1.52-1.484-2.595c-.152-1.274.222-2.419.993-3.424c.83-1.086 1.928-1.776 3.272-2.02c1.098-.2 2.15-.07 3.096.571c.62.41 1.063.97 1.356 1.648c.07.105.023.164-.117.2m3.868 6.461c-1.064-.024-2.034-.328-2.852-1.029a3.67 3.67 0 0 1-1.262-2.255c-.21-1.32.152-2.489.947-3.529c.853-1.122 1.881-1.706 3.272-1.95c1.192-.21 2.314-.095 3.33.595c.923.63 1.496 1.484 1.648 2.605c.198 1.578-.257 2.863-1.344 3.962c-.771.783-1.718 1.273-2.805 1.495c-.315.06-.63.07-.934.106m2.78-4.72c-.011-.153-.011-.27-.034-.387c-.21-1.157-1.274-1.81-2.384-1.554c-1.087.245-1.788.935-2.045 2.033c-.21.912.234 1.835 1.075 2.21c.643.28 1.285.244 1.905-.07c.923-.48 1.425-1.228 1.484-2.233z' ],\r\n 'Git': [ 32, 32, [], 'solid',\r\n 'M13.172 2.828L11.78 4.22l1.91 1.91l2 2A2.986 2.986 0 0 1 20 10.81a3.25 3.25 0 0 1-.31 1.31l2.06 2a2.68 2.68 0 0 1 3.37.57a2.86 2.86 0 0 1 .88 2.117a3.02 3.02 0 0 1-.856 2.109A2.9 2.9 0 0 1 23 19.81a2.93 2.93 0 0 1-2.13-.87a2.694 2.694 0 0 1-.56-3.38l-2-2.06a3 3 0 0 1-.31.12V20a3 3 0 0 1 1.44 1.09a2.92 2.92 0 0 1 .56 1.72a2.88 2.88 0 0 1-.878 2.128a2.98 2.98 0 0 1-2.048.871a2.981 2.981 0 0 1-2.514-4.719A3 3 0 0 1 16 20v-6.38a2.96 2.96 0 0 1-1.44-1.09a2.9 2.9 0 0 1-.56-1.72a2.9 2.9 0 0 1 .31-1.31l-3.9-3.9l-7.579 7.572a4 4 0 0 0-.001 5.658l10.342 10.342a4 4 0 0 0 5.656 0l10.344-10.344a4 4 0 0 0 0-5.656L18.828 2.828a4 4 0 0 0-5.656 0' ],\r\n 'Json': [ 32, 32, [], 'solid',\r\n 'M4.014 14.976a2.5 2.5 0 0 0 1.567-.518a2.38 2.38 0 0 0 .805-1.358a15.3 15.3 0 0 0 .214-2.944q.012-2.085.075-2.747a5.2 5.2 0 0 1 .418-1.686a3 3 0 0 1 .755-1.018A3.05 3.05 0 0 1 9 4.125A6.8 6.8 0 0 1 10.544 4h.7v1.96h-.387a2.34 2.34 0 0 0-1.723.468a3.4 3.4 0 0 0-.425 2.092a36 36 0 0 1-.137 4.133a4.7 4.7 0 0 1-.768 2.06A4.6 4.6 0 0 1 6.1 16a3.8 3.8 0 0 1 1.992 1.754a8.9 8.9 0 0 1 .618 3.865q0 2.435.05 2.9a1.76 1.76 0 0 0 .504 1.181a2.64 2.64 0 0 0 1.592.337h.387V28h-.7a5.7 5.7 0 0 1-1.773-.2a2.97 2.97 0 0 1-1.324-.93a3.35 3.35 0 0 1-.681-1.63a24 24 0 0 1-.165-3.234a16.5 16.5 0 0 0-.214-3.106a2.4 2.4 0 0 0-.805-1.361a2.5 2.5 0 0 0-1.567-.524Zm23.972 2.035a2.5 2.5 0 0 0-1.567.524a2.4 2.4 0 0 0-.805 1.361a16.5 16.5 0 0 0-.212 3.109a24 24 0 0 1-.169 3.234a3.35 3.35 0 0 1-.681 1.63a2.97 2.97 0 0 1-1.324.93a5.7 5.7 0 0 1-1.773.2h-.7V26.04h.387a2.64 2.64 0 0 0 1.592-.337a1.76 1.76 0 0 0 .506-1.186q.05-.462.05-2.9a8.9 8.9 0 0 1 .618-3.865A3.8 3.8 0 0 1 25.9 16a4.6 4.6 0 0 1-1.7-1.286a4.7 4.7 0 0 1-.768-2.06a36 36 0 0 1-.137-4.133a3.4 3.4 0 0 0-.425-2.092a2.34 2.34 0 0 0-1.723-.468h-.387V4h.7a6.8 6.8 0 0 1 1.54.125a3.05 3.05 0 0 1 1.149.581a3 3 0 0 1 .755 1.018a5.2 5.2 0 0 1 .418 1.686q.062.662.075 2.747a15.3 15.3 0 0 0 .212 2.947a2.38 2.38 0 0 0 .805 1.355a2.5 2.5 0 0 0 1.567.518Z' ],\r\n 'Js': [ 32, 32, [], 'solid',\r\n 'M18.774 19.7a3.73 3.73 0 0 0 3.376 2.078c1.418 0 2.324-.709 2.324-1.688c0-1.173-.931-1.589-2.491-2.272l-.856-.367c-2.469-1.052-4.11-2.37-4.11-5.156c0-2.567 1.956-4.52 5.012-4.52A5.06 5.06 0 0 1 26.9 10.52l-2.665 1.711a2.33 2.33 0 0 0-2.2-1.467a1.49 1.49 0 0 0-1.638 1.467c0 1.027.636 1.442 2.1 2.078l.856.366c2.908 1.247 4.549 2.518 4.549 5.376c0 3.081-2.42 4.769-5.671 4.769a6.58 6.58 0 0 1-6.236-3.5ZM6.686 20c.538.954 1.027 1.76 2.2 1.76c1.124 0 1.834-.44 1.834-2.15V7.975h3.422v11.683c0 3.543-2.078 5.156-5.11 5.156A5.31 5.31 0 0 1 3.9 21.688Z' ],\r\n 'Ts': [ 32, 32, [], 'solid',\r\n 'M23.827 8.243a4.4 4.4 0 0 1 2.223 1.281a6 6 0 0 1 .852 1.143c.011.045-1.534 1.083-2.471 1.662c-.034.023-.169-.124-.322-.35a2.01 2.01 0 0 0-1.67-1c-1.077-.074-1.771.49-1.766 1.433a1.3 1.3 0 0 0 .153.666c.237.49.677.784 2.059 1.383c2.544 1.095 3.636 1.817 4.31 2.843a5.16 5.16 0 0 1 .416 4.333a4.76 4.76 0 0 1-3.932 2.815a11 11 0 0 1-2.708-.028a6.53 6.53 0 0 1-3.616-1.884a6.3 6.3 0 0 1-.926-1.371a3 3 0 0 1 .327-.208c.158-.09.756-.434 1.32-.761l1.024-.6l.214.312a4.8 4.8 0 0 0 1.35 1.292a3.3 3.3 0 0 0 3.458-.175a1.545 1.545 0 0 0 .2-1.974c-.276-.395-.84-.727-2.443-1.422a8.8 8.8 0 0 1-3.349-2.055a4.7 4.7 0 0 1-.976-1.777a7.1 7.1 0 0 1-.062-2.268a4.33 4.33 0 0 1 3.644-3.374a9 9 0 0 1 2.691.084m-8.343 1.483l.011 1.454h-4.63v13.148H7.6V11.183H2.97V9.755a14 14 0 0 1 .04-1.466c.017-.023 2.832-.034 6.245-.028l6.211.017Z' ],\r\n 'Linux': [ 448, 512, [], 'regular',\r\n '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' ],\r\n 'SquareJs': [ 448, 512, [], 'solid',\r\n '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' ],\r\n 'Safari': [ 512, 512, [], 'solid',\r\n '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' ],\r\n 'Php': [ 512, 512, [], 'solid',\r\n 'M170.322 349.808c-2.4-15.66-9-28.38-25.02-34.531c-6.27-2.4-11.7-6.78-17.88-9.54c-7.02-3.15-14.16-6.15-21.57-8.1c-5.61-1.5-10.83 1.02-14.16 5.94c-3.15 4.62-.87 8.97 1.77 12.84c2.97 4.35 6.27 8.49 9.6 12.57c5.52 6.78 11.37 13.29 16.74 20.161c5.13 6.57 9.51 13.86 8.76 22.56c-1.65 19.08-10.29 34.891-24.21 47.76c-1.53 1.38-4.23 2.37-6.21 2.19c-8.88-.96-16.95-4.32-23.46-10.53c-7.47-7.11-6.33-15.48 2.61-20.67c2.13-1.23 4.35-2.37 6.3-3.87c5.46-4.11 7.29-11.13 4.32-17.22c-1.41-2.94-3-6.12-5.34-8.25c-11.43-10.41-22.651-21.151-34.891-30.63C18.01 307.447 2.771 276.968.43 240.067c-2.64-40.981 6.87-79.231 28.5-114.242c8.19-13.29 17.73-25.951 32.37-32.52c9.96-4.47 20.88-6.99 31.531-9.78c29.311-7.71 58.89-13.5 89.401-8.34c26.28 4.41 45.511 17.94 54.331 43.77c5.79 16.89 7.17 34.35 5.37 52.231c-3.54 35.131-29.49 66.541-63.331 75.841c-14.67 4.02-22.68 1.77-31.5-10.44c-6.33-8.79-11.58-18.36-17.25-27.631c-.84-1.38-1.44-2.97-2.16-4.44c-.69-1.47-1.44-2.88-2.16-4.35c2.13 15.24 5.67 29.911 13.98 42.99c4.5 7.11 10.5 12.36 19.29 13.14c32.34 2.91 59.641-7.71 79.021-33.721c21.69-29.101 26.461-62.581 20.19-97.831c-1.23-6.96-3.3-13.77-4.77-20.7c-.99-4.47.78-7.77 5.19-9.33c2.04-.69 4.14-1.26 6.18-1.68c26.461-5.7 53.221-7.59 80.191-4.86c30.601 3.06 59.551 11.46 85.441 28.471c40.531 26.67 65.641 64.621 79.291 110.522c1.98 6.66 2.28 13.95 2.46 20.971c.12 4.68-2.88 5.91-6.45 2.97c-3.93-3.21-7.53-6.87-10.92-10.65c-3.15-3.57-5.67-7.65-8.73-11.4c-2.37-2.94-4.44-2.49-5.58 1.17c-.72 2.22-1.35 4.41-1.98 6.63c-7.08 25.26-18.24 48.3-36.33 67.711c-2.52 2.73-4.77 6.78-5.07 10.38c-.78 9.96-1.35 20.13-.39 30.06c1.98 21.331 5.07 42.57 7.47 63.871c1.35 12.03-2.52 19.11-13.83 23.281c-7.95 2.91-16.47 5.04-24.87 5.64c-13.38.93-26.88.27-40.32.27c-.36-15 .93-29.731-13.17-37.771c2.73-11.13 5.88-21.69 7.77-32.49c1.56-8.97.24-17.79-6.06-25.14c-5.91-6.93-13.32-8.82-20.101-4.86c-20.43 11.91-41.671 11.97-63.301 4.17c-9.93-3.6-16.86-1.56-22.351 7.5c-5.91 9.75-8.4 20.7-7.74 31.771c.84 13.95 3.27 27.75 5.13 41.64c1.02 7.77.15 9.78-7.56 11.76c-17.13 4.35-34.56 4.83-52.081 3.42c-.93-.09-1.86-.48-2.46-.63c-.87-14.55.66-29.671-16.68-37.411c7.68-16.29 6.63-33.18 3.99-50.07l-.06-.15zm-103.561-57.09c2.55-2.4 4.59-6.15 5.31-9.6c1.8-8.64-4.68-20.22-12.18-23.43c-3.99-1.74-7.47-1.11-10.29 2.07c-6.87 7.77-13.65 15.63-20.401 23.521c-1.14 1.35-2.16 2.94-2.97 4.53c-2.7 5.19-1.11 8.97 4.65 10.38c3.48.87 7.08 1.05 10.65 1.56c9.3-.9 18.3-2.46 25.23-9zm.78-86.371c-.03-6.18-5.19-11.34-11.28-11.37c-6.27-.03-11.67 5.58-11.46 11.76c.27 6.21 5.43 11.19 11.61 11.07c6.24-.09 11.22-5.19 11.16-11.43z' ],\r\n 'Python': [ 448, 512, [], 'solid',\r\n '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' ],\r\n 'Markdown': [ 32, 32, [], 'solid', 'm14 10l-4 3.5L6 10H4v12h4v-6l2 2l2-2v6h4V10zm12 6v-6h-4v6h-4l6 8l6-8z' ],\r\n 'Microsoft': [ 448, 512, [], 'solid',\r\n 'M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z' ],\r\n 'Npm': [ 576, 512, [], 'solid',\r\n 'M288 288h-32v-64h32v64zm288-128v192H288v32H160v-32H0V160h576zm-416 32H32v128h64v-96h32v96h32V192zm160 0H192v160h64v-32h64V192zm224 0H352v128h64v-96h32v96h32v-96h32v96h32V192z' ],\r\n 'Reddit': [ 512, 512, [], 'solid',\r\n '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' ],\r\n 'Rust': [ 512, 512, [], 'solid',\r\n 'M508.52,249.75,486.7,236.24c-.17-2-.34-3.93-.55-5.88l18.72-17.5a7.35,7.35,0,0,0-2.44-12.25l-24-9c-.54-1.88-1.08-3.78-1.67-5.64l15-20.83a7.35,7.35,0,0,0-4.79-11.54l-25.42-4.15c-.9-1.73-1.79-3.45-2.73-5.15l10.68-23.42a7.35,7.35,0,0,0-6.95-10.39l-25.82.91q-1.79-2.22-3.61-4.4L439,81.84A7.36,7.36,0,0,0,430.16,73L405,78.93q-2.17-1.83-4.4-3.61l.91-25.82a7.35,7.35,0,0,0-10.39-7L367.7,53.23c-1.7-.94-3.43-1.84-5.15-2.73L358.4,25.08a7.35,7.35,0,0,0-11.54-4.79L326,35.26c-1.86-.59-3.75-1.13-5.64-1.67l-9-24a7.35,7.35,0,0,0-12.25-2.44l-17.5,18.72c-1.95-.21-3.91-.38-5.88-.55L262.25,3.48a7.35,7.35,0,0,0-12.5,0L236.24,25.3c-2,.17-3.93.34-5.88.55L212.86,7.13a7.35,7.35,0,0,0-12.25,2.44l-9,24c-1.89.55-3.79,1.08-5.66,1.68l-20.82-15a7.35,7.35,0,0,0-11.54,4.79l-4.15,25.41c-1.73.9-3.45,1.79-5.16,2.73L120.88,42.55a7.35,7.35,0,0,0-10.39,7l.92,25.81c-1.49,1.19-3,2.39-4.42,3.61L81.84,73A7.36,7.36,0,0,0,73,81.84L78.93,107c-1.23,1.45-2.43,2.93-3.62,4.41l-25.81-.91a7.42,7.42,0,0,0-6.37,3.26,7.35,7.35,0,0,0-.57,7.13l10.66,23.41c-.94,1.7-1.83,3.43-2.73,5.16L25.08,153.6a7.35,7.35,0,0,0-4.79,11.54l15,20.82c-.59,1.87-1.13,3.77-1.68,5.66l-24,9a7.35,7.35,0,0,0-2.44,12.25l18.72,17.5c-.21,1.95-.38,3.91-.55,5.88L3.48,249.75a7.35,7.35,0,0,0,0,12.5L25.3,275.76c.17,2,.34,3.92.55,5.87L7.13,299.13a7.35,7.35,0,0,0,2.44,12.25l24,9c.55,1.89,1.08,3.78,1.68,5.65l-15,20.83a7.35,7.35,0,0,0,4.79,11.54l25.42,4.15c.9,1.72,1.79,3.45,2.73,5.14L42.56,391.12a7.35,7.35,0,0,0,.57,7.13,7.13,7.13,0,0,0,6.37,3.26l25.83-.91q1.77,2.22,3.6,4.4L73,430.16A7.36,7.36,0,0,0,81.84,439L107,433.07q2.18,1.83,4.41,3.61l-.92,25.82a7.35,7.35,0,0,0,10.39,6.95l23.43-10.68c1.69.94,3.42,1.83,5.14,2.73l4.15,25.42a7.34,7.34,0,0,0,11.54,4.78l20.83-15c1.86.6,3.76,1.13,5.65,1.68l9,24a7.36,7.36,0,0,0,12.25,2.44l17.5-18.72c1.95.21,3.92.38,5.88.55l13.51,21.82a7.35,7.35,0,0,0,12.5,0l13.51-21.82c2-.17,3.93-.34,5.88-.56l17.5,18.73a7.36,7.36,0,0,0,12.25-2.44l9-24c1.89-.55,3.78-1.08,5.65-1.68l20.82,15a7.34,7.34,0,0,0,11.54-4.78l4.15-25.42c1.72-.9,3.45-1.79,5.15-2.73l23.42,10.68a7.35,7.35,0,0,0,10.39-6.95l-.91-25.82q2.22-1.79,4.4-3.61L430.16,439a7.36,7.36,0,0,0,8.84-8.84L433.07,405q1.83-2.17,3.61-4.4l25.82.91a7.23,7.23,0,0,0,6.37-3.26,7.35,7.35,0,0,0,.58-7.13L458.77,367.7c.94-1.7,1.83-3.43,2.73-5.15l25.42-4.15a7.35,7.35,0,0,0,4.79-11.54l-15-20.83c.59-1.87,1.13-3.76,1.67-5.65l24-9a7.35,7.35,0,0,0,2.44-12.25l-18.72-17.5c.21-1.95.38-3.91.55-5.87l21.82-13.51a7.35,7.35,0,0,0,0-12.5Zm-151,129.08A13.91,13.91,0,0,0,341,389.51l-7.64,35.67A187.51,187.51,0,0,1,177,424.44l-7.64-35.66a13.87,13.87,0,0,0-16.46-10.68l-31.51,6.76a187.38,187.38,0,0,1-16.26-19.21H258.3c1.72,0,2.89-.29,2.89-1.91V309.55c0-1.57-1.17-1.91-2.89-1.91H213.47l.05-34.35H262c4.41,0,23.66,1.28,29.79,25.87,1.91,7.55,6.17,32.14,9.06,40,2.89,8.82,14.6,26.46,27.1,26.46H407a187.3,187.3,0,0,1-17.34,20.09Zm25.77,34.49A15.24,15.24,0,1,1,368,398.08h.44A15.23,15.23,0,0,1,383.24,413.32Zm-225.62-.68a15.24,15.24,0,1,1-15.25-15.25h.45A15.25,15.25,0,0,1,157.62,412.64ZM69.57,234.15l32.83-14.6a13.88,13.88,0,0,0,7.06-18.33L102.69,186h26.56V305.73H75.65A187.65,187.65,0,0,1,69.57,234.15ZM58.31,198.09a15.24,15.24,0,0,1,15.23-15.25H74a15.24,15.24,0,1,1-15.67,15.24Zm155.16,24.49.05-35.32h63.26c3.28,0,23.07,3.77,23.07,18.62,0,12.29-15.19,16.7-27.68,16.7ZM399,306.71c-9.8,1.13-20.63-4.12-22-10.09-5.78-32.49-15.39-39.4-30.57-51.4,18.86-11.95,38.46-29.64,38.46-53.26,0-25.52-17.49-41.59-29.4-49.48-16.76-11-35.28-13.23-40.27-13.23H116.32A187.49,187.49,0,0,1,221.21,70.06l23.47,24.6a13.82,13.82,0,0,0,19.6.44l26.26-25a187.51,187.51,0,0,1,128.37,91.43l-18,40.57A14,14,0,0,0,408,220.43l34.59,15.33a187.12,187.12,0,0,1,.4,32.54H423.71c-1.91,0-2.69,1.27-2.69,3.13v8.82C421,301,409.31,305.58,399,306.71ZM240,60.21A15.24,15.24,0,0,1,255.21,45h.45A15.24,15.24,0,1,1,240,60.21ZM436.84,214a15.24,15.24,0,1,1,0-30.48h.44a15.24,15.24,0,0,1-.44,30.48Z' ],\r\n 'Unity': [ 16, 16, [], 'solid',\r\n 'M8 6.5L5 5l2-1V2L2 5v5l2-1V6.5L7 8v4.5L4 11l-2 1l6 3l6-3l-2-1l-3 1.5V8l3-1.5V9l2 1V5L9 2v2l2 1Z' ],\r\n 'UnrealEngine': [ 24, 24, [], 'regular',\r\n 'M12 0a12 12 0 1 0 12 12A12 12 0 0 0 12 0m0 23.52A11.52 11.52 0 1 1 23.52 12A11.52 11.52 0 0 1 12 23.52m7.13-9.791c-.206.997-1.126 3.557-4.06 4.942l-1.179-1.325l-1.988 2a7.34 7.34 0 0 1-5.804-2.978a3 3 0 0 0 .65.123c.326.006.678-.114.678-.66v-5.394a.89.89 0 0 0-1.116-.89c-.92.212-1.656 2.509-1.656 2.509a7.3 7.3 0 0 1 2.528-5.597a7.4 7.4 0 0 1 3.73-1.721c-1.006.573-1.57 1.507-1.57 2.29c0 1.262.76 1.109.984.923v7.28a1.2 1.2 0 0 0 .148.256a1.08 1.08 0 0 0 .88.445c.76 0 1.747-.868 1.747-.868V9.172c0-.6-.452-1.324-.905-1.572c0 0 .838-.149 1.484.346a6 6 0 0 1 .387-.425c1.508-1.48 2.929-1.902 4.112-2.112c0 0-2.151 1.69-2.151 3.96c0 1.687.043 5.801.043 5.801c.799.771 1.986-.342 3.059-1.441Z' ],\r\n 'UnrealEngine@solid': [ 24, 24, [], 'solid',\r\n 'M12 23c6.075 0 11-4.925 11-11S18.075 1 12 1S1 5.925 1 12s4.925 11 11 11m-8.442-9.416c.718-2.333 2.53-6.86 7.27-8.584v10.23c.179.18.645.54 1.076.54c.67 0 1.615-.54 1.615-.54V8.77c.555-1.16 3.123-3.232 4.847-3.232c-1.044 1.204-1.532 1.91-2.154 3.231v6.462c.718.18 2.154 0 3.23-1.077c-.87 1.98-3.23 4.308-4.307 4.308l-1.616-1.077L11.904 19c-1.615 0-4.308-1.077-5.385-2.692h1.616v-6.17c-1.96-.268-2.857.973-4.577 3.446' ],\r\n 'Ubuntu': [ 576, 512, [], 'solid',\r\n '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' ],\r\n 'VsCode': [ 16, 16, [], 'solid',\r\n 'M11.5 11.19V4.8L7.3 7.99M1.17 6.07a.6.6 0 0 1-.01-.81L2 4.48c.14-.13.48-.18.73 0l2.39 1.83l5.55-5.09c.22-.22.61-.32 1.05-.08l2.8 1.34c.25.15.49.38.49.81v9.49c0 .28-.2.58-.42.7l-3.08 1.48c-.22.09-.64 0-.79-.14L5.11 9.69l-2.38 1.83c-.27.18-.6.13-.74 0l-.84-.77c-.22-.23-.2-.61.04-.84l2.1-1.9' ],\r\n 'Windows': [ 448, 512, [], 'solid',\r\n 'M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z' ],\r\n 'Whatsapp': [ 448, 512, [], 'regular',\r\n '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' ],\r\n 'X-Twitter': [ 512, 512, [], 'regular',\r\n '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' ],\r\n // Internals Override\r\n 'Keyboard': [ 576, 512, [], 'regular',\r\n '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' ],\r\n 'IdCard': [ 576, 512, [], 'regular',\r\n 'M528 160l0 256c0 8.8-7.2 16-16 16l-192 0c0-44.2-35.8-80-80-80l-64 0c-44.2 0-80 35.8-80 80l-32 0c-8.8 0-16-7.2-16-16l0-256 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 32zM272 256a64 64 0 1 0 -128 0 64 64 0 1 0 128 0zm104-48c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0z' ],\r\n 'BookUser': [ 576, 512, [], 'regular',\r\n '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 32zM208 256a64 64 0 1 0 0-128 64 64 0 1 0 0 128zm-32 32c-44.2 0-80 35.8-80 80c0 8.8 7.2 16 16 16l192 0c8.8 0 16-7.2 16-16c0-44.2-35.8-80-80-80l-64 0zM376 144c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0zm0 96c-13.3 0-24 10.7-24 24s10.7 24 24 24l80 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-80 0z' ],\r\n 'Copy': [ 448, 512, [], 'regular',\r\n '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' ],\r\n 'Eye': [ 576, 512, [], 'regular',\r\n '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' ],\r\n 'EyeOff': [ 640, 512, [], 'regular',\r\n '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' ],\r\n 'StickyNote': [ 448, 512, [], 'regular',\r\n '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' ],\r\n 'CreditCard': [ 576, 512, [], 'regular',\r\n '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' ],\r\n 'Hourglass': [ 384, 512, [], 'regular',\r\n 'M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48l8 0 0 19c0 40.3 16 79 44.5 107.5L158.1 256 76.5 337.5C48 366 32 404.7 32 445l0 19-8 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l336 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-8 0 0-19c0-40.3-16-79-44.5-107.5L225.9 256l81.5-81.5C336 146 352 107.3 352 67l0-19 8 0c13.3 0 24-10.7 24-24s-10.7-24-24-24L24 0zM192 289.9l81.5 81.5C293 391 304 417.4 304 445l0 19L80 464l0-19c0-27.6 11-54 30.5-73.5L192 289.9zm0-67.9l-81.5-81.5C91 121 80 94.6 80 67l0-19 224 0 0 19c0 27.6-11 54-30.5 73.5L192 222.1z' ],\r\n // Solid Variants\r\n 'Bell': [ 448, 512, [], 'solid',\r\n 'M224 0c-17.7 0-32 14.3-32 32l0 19.2C119 66 64 130.6 64 208l0 18.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S19.4 416 32 416l384 0c12.6 0 24-7.4 29.2-18.9s3.1-25-5.3-34.4l-7.4-8.3C401.3 319.2 384 273.9 384 226.8l0-18.8c0-77.4-55-142-128-156.8L256 32c0-17.7-14.3-32-32-32zm45.3 493.3c12-12 18.7-28.3 18.7-45.3l-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.7z' ],\r\n 'BellOff': [ 640, 512, [], 'solid',\r\n '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.7l-90.2-70.7c.2-.4 .4-.9 .6-1.3c5.2-11.5 3.1-25-5.3-34.4l-7.4-8.3C497.3 319.2 480 273.9 480 226.8l0-18.8c0-77.4-55-142-128-156.8L352 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 19.2c-42.6 8.6-79 34.2-102 69.3L38.8 5.1zM406.2 416L160 222.1l0 4.8c0 47-17.3 92.4-48.5 127.6l-7.4 8.3c-8.4 9.4-10.4 22.9-5.3 34.4S115.4 416 128 416l278.2 0zm-40.9 77.3c12-12 18.7-28.3 18.7-45.3l-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.7z' ],\r\n 'Compass': [ 512, 512, [], 'solid',\r\n 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm50.7-186.9L162.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' ],\r\n 'File': [ 384, 512, [], 'solid',\r\n 'M0 64C0 28.7 28.7 0 64 0L224 0l0 128c0 17.7 14.3 32 32 32l128 0 0 288c0 35.3-28.7 64-64 64L64 512c-35.3 0-64-28.7-64-64L0 64zm384 64l-128 0L256 0 384 128z' ],\r\n 'MessageCircle': [ 512, 512, [], 'solid',\r\n 'M512 240c0 114.9-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.6C73.6 471.1 44.7 480 16 480c-6.5 0-12.3-3.9-14.8-9.9c-2.5-6-1.1-12.8 3.4-17.4c0 0 0 0 0 0s0 0 0 0s0 0 0 0c0 0 0 0 0 0l.3-.3c.3-.3 .7-.7 1.3-1.4c1.1-1.2 2.8-3.1 4.9-5.7c4.1-5 9.6-12.4 15.2-21.6c10-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 208z' ],\r\n 'Inbox': [ 512, 512, [], 'solid',\r\n 'M121 32C91.6 32 66 52 58.9 80.5L1.9 308.4C.6 313.5 0 318.7 0 323.9L0 416c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-92.1c0-5.2-.6-10.4-1.9-15.5l-57-227.9C446 52 420.4 32 391 32L121 32zm0 64l270 0 48 192-51.2 0c-12.1 0-23.2 6.8-28.6 17.7l-14.3 28.6c-5.4 10.8-16.5 17.7-28.6 17.7l-120.4 0c-12.1 0-23.2-6.8-28.6-17.7l-14.3-28.6c-5.4-10.8-16.5-17.7-28.6-17.7L73 288 121 96z' ],\r\n 'Mail': [ 512, 512, [], 'solid',\r\n 'M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48L48 64zM0 176L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-208L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z' ],\r\n 'MailOpen': [ 512, 512, [], 'solid',\r\n 'M64 208.1L256 65.9 448 208.1l0 47.4L289.5 373c-9.7 7.2-21.4 11-33.5 11s-23.8-3.9-33.5-11L64 255.5l0-47.4zM256 0c-12.1 0-23.8 3.9-33.5 11L25.9 156.7C9.6 168.8 0 187.8 0 208.1L0 448c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-239.9c0-20.3-9.6-39.4-25.9-51.4L289.5 11C279.8 3.9 268.1 0 256 0z' ],\r\n 'Mic': [ 384, 512, [], 'solid',\r\n 'M192 0C139 0 96 43 96 96l0 160c0 53 43 96 96 96s96-43 96-96l0-160c0-53-43-96-96-96zM64 216c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 89.1 66.2 162.7 152 174.4l0 33.6-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-33.6c85.8-11.7 152-85.3 152-174.4l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 70.7-57.3 128-128 128s-128-57.3-128-128l0-40z' ],\r\n 'MicOff': [ 640, 512, [], 'solid',\r\n '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.7L472.1 344.7c15.2-26 23.9-56.3 23.9-88.7l0-40c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 40c0 21.2-5.1 41.1-14.2 58.7L416 300.8 416 96c0-53-43-96-96-96s-96 43-96 96l0 54.3L38.8 5.1zM344 430.4c20.4-2.8 39.7-9.1 57.3-18.2l-43.1-33.9C346.1 382 333.3 384 320 384c-70.7 0-128-57.3-128-128l0-8.7L144.7 210c-.5 1.9-.7 3.9-.7 6l0 40c0 89.1 66.2 162.7 152 174.4l0 33.6-48 0c-13.3 0-24 10.7-24 24s10.7 24 24 24l72 0 72 0c13.3 0 24-10.7 24-24s-10.7-24-24-24l-48 0 0-33.6z' ],\r\n 'Link': [ 640, 512, [ 'Chain' ], 'solid',\r\n 'M579.8 267.7c56.5-56.5 56.5-148 0-204.5c-50-50-128.8-56.5-186.3-15.4l-1.6 1.1c-14.4 10.3-17.7 30.3-7.4 44.6s30.3 17.7 44.6 7.4l1.6-1.1c32.1-22.9 76-19.3 103.8 8.6c31.5 31.5 31.5 82.5 0 114L422.3 334.8c-31.5 31.5-82.5 31.5-114 0c-27.9-27.9-31.5-71.8-8.6-103.8l1.1-1.6c10.3-14.4 6.9-34.4-7.4-44.6s-34.4-6.9-44.6 7.4l-1.1 1.6C206.5 251.2 213 330 263 380c56.5 56.5 148 56.5 204.5 0L579.8 267.7zM60.2 244.3c-56.5 56.5-56.5 148 0 204.5c50 50 128.8 56.5 186.3 15.4l1.6-1.1c14.4-10.3 17.7-30.3 7.4-44.6s-30.3-17.7-44.6-7.4l-1.6 1.1c-32.1 22.9-76 19.3-103.8-8.6C74 372 74 321 105.5 289.5L217.7 177.2c31.5-31.5 82.5-31.5 114 0c27.9 27.9 31.5 71.8 8.6 103.9l-1.1 1.6c-10.3 14.4-6.9 34.4 7.4 44.6s34.4 6.9 44.6-7.4l1.1-1.6C433.5 260.8 427 182 377 132c-56.5-56.5-148-56.5-204.5 0L60.2 244.3z' ],\r\n 'House': [ 576, 512, [], 'solid',\r\n 'M575.8 255.5c0 18-15 32.1-32 32.1l-32 0 .7 160.2c0 2.7-.2 5.4-.5 8.1l0 16.2c0 22.1-17.9 40-40 40l-16 0c-1.1 0-2.2 0-3.3-.1c-1.4 .1-2.8 .1-4.2 .1L416 512l-24 0c-22.1 0-40-17.9-40-40l0-24 0-64c0-17.7-14.3-32-32-32l-64 0c-17.7 0-32 14.3-32 32l0 64 0 24c0 22.1-17.9 40-40 40l-24 0-31.9 0c-1.5 0-3-.1-4.5-.2c-1.2 .1-2.4 .2-3.6 .2l-16 0c-22.1 0-40-17.9-40-40l0-112c0-.9 0-1.9 .1-2.8l0-69.7-32 0c-18 0-32-14-32-32.1c0-9 3-17 10-24L266.4 8c7-7 15-8 22-8s15 2 21 7L564.8 231.5c8 7 12 15 11 24z' ],\r\n 'Gamepad': [ 640, 512, [], 'solid',\r\n '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' ],\r\n 'Camera': [ 512, 512, [], 'solid',\r\n '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' ],\r\n 'Printer': [ 512, 512, [], 'solid',\r\n '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' ],\r\n 'Server': [ 512, 512, [], 'solid',\r\n 'M64 32C28.7 32 0 60.7 0 96l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64L64 32zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm48 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0zM64 288c-35.3 0-64 28.7-64 64l0 64c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-64c0-35.3-28.7-64-64-64L64 288zm280 72a24 24 0 1 1 0 48 24 24 0 1 1 0-48zm56 24a24 24 0 1 1 48 0 24 24 0 1 1 -48 0z' ],\r\n 'Calendar': [ 448, 512, [], 'solid',\r\n 'M96 32l0 32L48 64C21.5 64 0 85.5 0 112l0 48 448 0 0-48c0-26.5-21.5-48-48-48l-48 0 0-32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 32L160 64l0-32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192L0 192 0 464c0 26.5 21.5 48 48 48l352 0c26.5 0 48-21.5 48-48l0-272z' ],\r\n 'Pipette': [ 512, 512, [], 'solid',\r\n 'M341.6 29.2L240.1 130.8l-9.4-9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-9.4-9.4L482.8 170.4c39-39 39-102.2 0-141.1s-102.2-39-141.1 0zM55.4 323.3c-15 15-23.4 35.4-23.4 56.6l0 42.4L5.4 462.2c-8.5 12.7-6.8 29.6 4 40.4s27.7 12.5 40.4 4L89.7 480l42.4 0c21.2 0 41.6-8.4 56.6-23.4L309.4 335.9l-45.3-45.3L143.4 411.3c-3 3-7.1 4.7-11.3 4.7L96 416l0-36.1c0-4.2 1.7-8.3 4.7-11.3L221.4 247.9l-45.3-45.3L55.4 323.3z' ],\r\n 'Scroll': [ 576, 512, [], 'solid',\r\n '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' ],\r\n 'Smartphone': [ 384, 512, [], 'solid',\r\n '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' ],\r\n 'Settings': [ 512, 512, [], 'solid',\r\n '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' ],\r\n 'Map': [ 576, 512, [], 'solid',\r\n 'M384 476.1L192 421.2l0-385.3L384 90.8l0 385.3zm32-1.2l0-386.5L543.1 37.5c15.8-6.3 32.9 5.3 32.9 22.3l0 334.8c0 9.8-6 18.6-15.1 22.3L416 474.8zM15.1 95.1L160 37.2l0 386.5L32.9 474.5C17.1 480.8 0 469.2 0 452.2L0 117.4c0-9.8 6-18.6 15.1-22.3z' ],\r\n 'Folder': [ 512, 512, [], 'solid',\r\n 'M64 480H448c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64H288c-10.1 0-19.6-4.7-25.6-12.8L243.2 57.6C231.1 41.5 212.1 32 192 32H64C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64z' ],\r\n 'FolderOpen': [ 576, 512, [], 'solid',\r\n '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' ],\r\n 'FolderClosed': [ 512, 512, [], 'solid',\r\n 'M448 480L64 480c-35.3 0-64-28.7-64-64L0 192l512 0 0 224c0 35.3-28.7 64-64 64zm64-320L0 160 0 96C0 60.7 28.7 32 64 32l128 0c20.1 0 39.1 9.5 51.2 25.6l19.2 25.6c6 8.1 15.5 12.8 25.6 12.8l160 0c35.3 0 64 28.7 64 64z' ],\r\n 'Function': [ 384, 512, [], 'solid',\r\n 'M314.7 32c-38.8 0-73.7 23.3-88.6 59.1L170.7 224 64 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l80 0L98.9 396.3c-5 11.9-16.6 19.7-29.5 19.7L32 416c-17.7 0-32 14.3-32 32s14.3 32 32 32l37.3 0c38.8 0 73.7-23.3 88.6-59.1L213.3 288 320 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-80 0 45.1-108.3c5-11.9 16.6-19.7 29.5-19.7L352 96c17.7 0 32-14.3 32-32s-14.3-32-32-32l-37.3 0z' ],\r\n 'Stop': [ 384, 512, [], 'solid',\r\n 'M0 128C0 92.7 28.7 64 64 64H320c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V128z' ],\r\n 'Image': [ 512, 512, [], 'solid',\r\n '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' ],\r\n 'Images': [ 576, 512, [], 'solid',\r\n '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' ],\r\n 'Info': [ 512, 512, [], 'solid',\r\n 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336l24 0 0-64-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 88 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z' ],\r\n 'Bone': [ 576, 512, [], 'solid',\r\n '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' ],\r\n 'Puzzle': [ 512, 512, [], 'solid',\r\n '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' ],\r\n 'Lock': [ 448, 512, [], 'solid',\r\n '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' ],\r\n 'LockOpen': [ 576, 512, [], 'solid',\r\n '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' ],\r\n 'Shuffle': [ 512, 512, [], 'solid',\r\n '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' ],\r\n 'Play': [ 384, 512, [], 'solid',\r\n 'M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80L0 432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z' ],\r\n 'Pause': [ 320, 512, [], 'solid',\r\n 'M48 64C21.5 64 0 85.5 0 112L0 400c0 26.5 21.5 48 48 48l32 0c26.5 0 48-21.5 48-48l0-288c0-26.5-21.5-48-48-48L48 64zm192 0c-26.5 0-48 21.5-48 48l0 288c0 26.5 21.5 48 48 48l32 0c26.5 0 48-21.5 48-48l0-288c0-26.5-21.5-48-48-48l-32 0z' ],\r\n 'LogIn': [ 512, 512, [], 'solid',\r\n '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' ],\r\n 'LogOut': [ 512, 512, [], 'solid',\r\n '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' ],\r\n 'MousePointer': [ 320, 512, [], 'solid',\r\n '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' ],\r\n 'User': [ 512, 512, [], 'solid',\r\n 'M256 288A144 144 0 1 0 256 0a144 144 0 1 0 0 288zm-94.7 32C72.2 320 0 392.2 0 481.3c0 17 13.8 30.7 30.7 30.7l450.6 0c17 0 30.7-13.8 30.7-30.7C512 392.2 439.8 320 350.7 320l-189.4 0z' ],\r\n 'HardDriveDownload': [ 512, 512, [], 'solid',\r\n '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' ],\r\n 'HardDriveUpload': [ 512, 512, [], 'solid',\r\n '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' ],\r\n 'CircleCheck': [ 512, 512, [ 'CheckCircle2' ], 'solid',\r\n 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM369 209L241 337c-9.4 9.4-24.6 9.4-33.9 0l-64-64c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l47 47L335 175c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9z' ],\r\n 'CirclePlay': [ 512, 512, [], 'solid',\r\n 'M0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9l0 176c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z' ],\r\n 'CirclePause': [ 512, 512, [], 'solid',\r\n 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM224 192l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32s32 14.3 32 32zm128 0l0 128c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32s32 14.3 32 32z' ],\r\n 'CirclePlus': [ 512, 512, [ 'PlusCircle' ], 'solid',\r\n 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344l0-64-64 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l64 0 0-64c0-13.3 10.7-24 24-24s24 10.7 24 24l0 64 64 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-64 0 0 64c0 13.3-10.7 24-24 24s-24-10.7-24-24z' ],\r\n 'CircleMinus': [ 512, 512, [ 'MinusCircle' ], 'solid',\r\n 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232l144 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-144 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z' ],\r\n 'CircleStop': [ 512, 512, [], 'solid',\r\n 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM192 160l128 0c17.7 0 32 14.3 32 32l0 128c0 17.7-14.3 32-32 32l-128 0c-17.7 0-32-14.3-32-32l0-128c0-17.7 14.3-32 32-32z' ],\r\n 'CircleDot': [ 512, 512, [], 'solid',\r\n '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 256zm256-96a96 96 0 1 1 0 192 96 96 0 1 1 0-192z' ],\r\n 'CircleHelp': [ 512, 512, [ 'HelpCircle' ], 'solid',\r\n 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3l58.3 0c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24l0-13.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1l-58.3 0c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z' ],\r\n 'CircleArrowUp': [ 512, 512, [ 'ArrowUpCircle' ], 'solid',\r\n 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM385 215c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-71-71L280 392c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-214.1-71 71c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 103c9.4-9.4 24.6-9.4 33.9 0L385 215z' ],\r\n 'CircleArrowDown': [ 512, 512, [ 'ArrowDownCircle' ], 'solid',\r\n 'M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM127 297c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l71 71L232 120c0-13.3 10.7-24 24-24s24 10.7 24 24l0 214.1 71-71c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 409c-9.4 9.4-24.6 9.4-33.9 0L127 297z' ],\r\n 'CircleArrowLeft': [ 512, 512, [ 'ArrowLeftCircle' ], 'solid',\r\n 'M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM215 127c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-71 71L392 232c13.3 0 24 10.7 24 24s-10.7 24-24 24l-214.1 0 71 71c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L103 273c-9.4-9.4-9.4-24.6 0-33.9L215 127z' ],\r\n 'CircleArrowRight': [ 512, 512, [ 'ArrowRightCircle' ], 'solid',\r\n 'M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM297 385c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l71-71L120 280c-13.3 0-24-10.7-24-24s10.7-24 24-24l214.1 0-71-71c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L409 239c9.4 9.4 9.4 24.6 0 33.9L297 385z' ],\r\n 'CircleAlert': [ 512, 512, [ 'AlertCircle' ], 'solid',\r\n 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24l0 112c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-112c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z' ],\r\n 'CircleUser': [ 512, 512, [ 'UserCircle' ], 'solid',\r\n 'M399 384.2C376.9 345.8 335.4 320 288 320l-64 0c-47.4 0-88.9 25.8-111 64.2c35.2 39.2 86.2 63.8 143 63.8s107.8-24.7 143-63.8zM0 256a256 256 0 1 1 512 0A256 256 0 1 1 0 256zm256 16a72 72 0 1 0 0-144 72 72 0 1 0 0 144z' ],\r\n 'CircleChevronRight': [ 512, 512, [ 'ChevronRightCircle' ], 'solid',\r\n 'M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zM241 377c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l87-87-87-87c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0L345 239c9.4 9.4 9.4 24.6 0 33.9L241 377z' ],\r\n 'CircleChevronDown': [ 512, 512, [ 'ChevronDownCircle' ], 'solid',\r\n 'M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM135 241c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l87 87 87-87c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9L273 345c-9.4 9.4-24.6 9.4-33.9 0L135 241z' ],\r\n 'CircleChevronUp': [ 512, 512, [ 'ChevronUpCircle' ], 'solid',\r\n 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM377 271c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-87-87-87 87c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9L239 167c9.4-9.4 24.6-9.4 33.9 0L377 271z' ],\r\n 'CircleChevronLeft': [ 512, 512, [ 'ChevronLeftCircle' ], 'solid',\r\n 'M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM271 135c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-87 87 87 87c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0L167 273c-9.4-9.4-9.4-24.6 0-33.9L271 135z' ],\r\n 'CircleX': [ 512, 512, [ 'XCircle' ], 'solid',\r\n 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM175 175c9.4-9.4 24.6-9.4 33.9 0l47 47 47-47c9.4-9.4 24.6-9.4 33.9 0s9.4 24.6 0 33.9l-47 47 47 47c9.4 9.4 9.4 24.6 0 33.9s-24.6 9.4-33.9 0l-47-47-47 47c-9.4 9.4-24.6 9.4-33.9 0s-9.4-24.6 0-33.9l47-47-47-47c-9.4-9.4-9.4-24.6 0-33.9z' ],\r\n 'Apple': [ 384, 512, [], 'solid',\r\n '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' ],\r\n 'Chrome': [ 512, 512, [], 'solid',\r\n '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' ],\r\n 'Facebook': [ 512, 512, [], 'solid',\r\n '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' ],\r\n 'Github': [ 496, 512, [], 'solid',\r\n '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' ],\r\n 'Youtube': [ 576, 512, [], 'solid',\r\n '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' ],\r\n 'CircleRight@solid': [ 512, 512, [], 'solid',\r\n 'M0 256a256 256 0 1 0 512 0A256 256 0 1 0 0 256zm395.3 11.3l-112 112c-4.6 4.6-11.5 5.9-17.4 3.5s-9.9-8.3-9.9-14.8l0-64-96 0c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32l96 0 0-64c0-6.5 3.9-12.3 9.9-14.8s12.9-1.1 17.4 3.5l112 112c6.2 6.2 6.2 16.4 0 22.6z' ],\r\n 'CircleUp@solid': [ 512, 512, [], 'solid',\r\n 'M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm11.3-395.3l112 112c4.6 4.6 5.9 11.5 3.5 17.4s-8.3 9.9-14.8 9.9l-64 0 0 96c0 17.7-14.3 32-32 32l-32 0c-17.7 0-32-14.3-32-32l0-96-64 0c-6.5 0-12.3-3.9-14.8-9.9s-1.1-12.9 3.5-17.4l112-112c6.2-6.2 16.4-6.2 22.6 0z' ],\r\n 'CircleLeft@solid': [ 512, 512, [], 'solid',\r\n 'M512 256A256 256 0 1 0 0 256a256 256 0 1 0 512 0zM116.7 244.7l112-112c4.6-4.6 11.5-5.9 17.4-3.5s9.9 8.3 9.9 14.8l0 64 96 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32l-96 0 0 64c0 6.5-3.9 12.3-9.9 14.8s-12.9 1.1-17.4-3.5l-112-112c-6.2-6.2-6.2-16.4 0-22.6z' ],\r\n 'CircleDown@solid': [ 512, 512, [], 'solid',\r\n 'M256 0a256 256 0 1 0 0 512A256 256 0 1 0 256 0zM244.7 395.3l-112-112c-4.6-4.6-5.9-11.5-3.5-17.4s8.3-9.9 14.8-9.9l64 0 0-96c0-17.7 14.3-32 32-32l32 0c17.7 0 32 14.3 32 32l0 96 64 0c6.5 0 12.3 3.9 14.8 9.9s1.1 12.9-3.5 17.4l-112 112c-6.2 6.2-16.4 6.2-22.6 0z' ],\r\n 'PaperPlane@solid': [ 512, 512, [], 'solid',\r\n 'M498.1 5.6c10.1 7 15.4 19.1 13.5 31.2l-64 416c-1.5 9.7-7.4 18.2-16 23s-18.9 5.4-28 1.6L284 427.7l-68.5 74.1c-8.9 9.7-22.9 12.9-35.2 8.1S160 493.2 160 480l0-83.6c0-4 1.5-7.8 4.2-10.8L331.8 202.8c5.8-6.3 5.6-16-.4-22s-15.7-6.4-22-.7L106 360.8 17.7 316.6C7.1 311.3 .3 300.7 0 288.9s5.9-22.8 16.1-28.7l448-256c10.7-6.1 23.9-5.5 34 1.4z' ]\r\n};\r\n\r\n// Alias for Lucide Icons\r\nLX.LucideIconAlias = {\r\n 'Stop': 'Square',\r\n 'Refresh': 'RefreshCw',\r\n 'Left': 'ChevronLeft',\r\n 'Right': 'ChevronRight',\r\n 'Up': 'ChevronUp',\r\n 'Down': 'ChevronDown',\r\n 'MenuArrows': 'ChevronsUpDown',\r\n 'RotateForward': 'RotateCw',\r\n 'RotateRight': 'RotateCw',\r\n 'RotateBack': 'RotateCcw',\r\n 'RotateLeft': 'RotateCcw'\r\n};\r\n\r\n// Generate Alias icons\r\n\r\nexport default LX.ICONS = ( () => {\r\n const aliasIcons: Record<string, any> = {};\r\n\r\n for ( let i in RAW_ICONS )\r\n {\r\n const aliases = RAW_ICONS[i][2];\r\n aliases.forEach( ( a: string ) => aliasIcons[a] = i );\r\n }\r\n\r\n return { ...RAW_ICONS, ...aliasIcons };\r\n} )();\r\n","// Event.ts @jxarco\r\n\r\nimport { LX } from './Namespace';\r\nimport { Panel } from './Panel';\r\n\r\n/*\r\n * Events and Signals\r\n */\r\n\r\nexport class IEvent\r\n{\r\n name: any;\r\n value: any;\r\n domEvent: any;\r\n\r\n constructor( name: string | null | undefined, value: any, domEvent?: any )\r\n {\r\n this.name = name;\r\n this.value = value;\r\n this.domEvent = domEvent;\r\n }\r\n}\r\n\r\nLX.IEvent = IEvent;\r\n\r\nexport class TreeEvent\r\n{\r\n static NONE = 0;\r\n static NODE_SELECTED = 1;\r\n static NODE_DELETED = 2;\r\n static NODE_DBLCLICKED = 3;\r\n static NODE_CONTEXTMENU = 4;\r\n static NODE_DRAGGED = 5;\r\n static NODE_RENAMED = 6;\r\n static NODE_VISIBILITY = 7;\r\n static NODE_CARETCHANGED = 8;\r\n\r\n type: number = TreeEvent.NONE;\r\n node: any;\r\n value: any;\r\n event: any;\r\n multiple: boolean = false; // Multiple selection\r\n panel: Panel | null = null;\r\n\r\n constructor( type: number, node: any, value: any, event: any )\r\n {\r\n this.type = type || TreeEvent.NONE;\r\n this.node = node;\r\n this.value = value;\r\n this.event = event;\r\n }\r\n\r\n string()\r\n {\r\n switch ( this.type )\r\n {\r\n case TreeEvent.NONE:\r\n return 'tree_event_none';\r\n case TreeEvent.NODE_SELECTED:\r\n return 'tree_event_selected';\r\n case TreeEvent.NODE_DELETED:\r\n return 'tree_event_deleted';\r\n case TreeEvent.NODE_DBLCLICKED:\r\n return 'tree_event_dblclick';\r\n case TreeEvent.NODE_CONTEXTMENU:\r\n return 'tree_event_contextmenu';\r\n case TreeEvent.NODE_DRAGGED:\r\n return 'tree_event_dragged';\r\n case TreeEvent.NODE_RENAMED:\r\n return 'tree_event_renamed';\r\n case TreeEvent.NODE_VISIBILITY:\r\n return 'tree_event_visibility';\r\n case TreeEvent.NODE_CARETCHANGED:\r\n return 'tree_event_caretchanged';\r\n }\r\n }\r\n}\r\n\r\nLX.TreeEvent = TreeEvent;\r\n","// BaseComponent.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\nimport { ContextMenu } from './ContextMenu';\r\n\r\nexport enum ComponentType\r\n{\r\n NONE = 0,\r\n TEXT = 1,\r\n TEXTAREA = 2,\r\n BUTTON = 3,\r\n SELECT = 4,\r\n CHECKBOX = 5,\r\n TOGGLE = 6,\r\n RADIO = 7,\r\n BUTTONS = 8,\r\n COLOR = 9,\r\n RANGE = 10,\r\n NUMBER = 11,\r\n TITLE = 12,\r\n VECTOR = 13,\r\n TREE = 14,\r\n PROGRESS = 15,\r\n FILE = 16,\r\n LAYERS = 17,\r\n ARRAY = 18,\r\n LIST = 19,\r\n TAGS = 20,\r\n CURVE = 21,\r\n CARD = 22,\r\n IMAGE = 23,\r\n CONTENT = 24,\r\n CUSTOM = 25,\r\n SEPARATOR = 26,\r\n KNOB = 27,\r\n SIZE = 28,\r\n OTP = 29,\r\n PAD = 30,\r\n FORM = 31,\r\n DIAL = 32,\r\n COUNTER = 33,\r\n TABLE = 34,\r\n TABS = 35,\r\n DATE = 36,\r\n MAP2D = 37,\r\n LABEL = 39,\r\n BLANK = 40,\r\n RATE = 41\r\n}\r\n\r\nLX.ComponentType = ComponentType;\r\n\r\n/**\r\n * @class BaseComponent\r\n */\r\n\r\nexport class BaseComponent\r\n{\r\n type: ComponentType;\r\n name: string | null | undefined;\r\n customName?: string;\r\n options: any;\r\n root: any;\r\n customIdx: number = -1;\r\n disabled: boolean = false;\r\n\r\n onSetValue?: ( v: any, b?: boolean, e?: any ) => void;\r\n onGetValue?: () => any;\r\n onAllowPaste?: ( b: boolean ) => boolean;\r\n onResize: ( r?: any ) => void;\r\n\r\n _initialValue: any;\r\n\r\n static NO_CONTEXT_TYPES = [\r\n ComponentType.BUTTON,\r\n ComponentType.LIST,\r\n ComponentType.FILE,\r\n ComponentType.PROGRESS\r\n ];\r\n\r\n constructor( type: ComponentType, name?: string | null | undefined, value?: any, options: any = {} )\r\n {\r\n this.type = type;\r\n this.name = name;\r\n this.options = options;\r\n this._initialValue = value;\r\n\r\n const root: any = document.createElement( 'div' );\r\n root.className = 'lexcomponent';\r\n\r\n this.onResize = () => {};\r\n\r\n if ( options.id )\r\n {\r\n root.id = options.id;\r\n }\r\n\r\n if ( options.title )\r\n {\r\n root.title = options.title;\r\n }\r\n\r\n if ( options.className )\r\n {\r\n root.className += ' ' + options.className;\r\n }\r\n\r\n if ( type != ComponentType.TITLE )\r\n {\r\n if ( options.width )\r\n {\r\n root.style.width = root.style.minWidth = options.width;\r\n }\r\n if ( options.maxWidth )\r\n {\r\n root.style.maxWidth = options.maxWidth;\r\n }\r\n if ( options.minWidth )\r\n {\r\n root.style.minWidth = options.minWidth;\r\n }\r\n if ( options.height )\r\n {\r\n root.style.height = root.style.minHeight = options.height;\r\n }\r\n\r\n LX.componentResizeObserver.observe( root );\r\n }\r\n\r\n if ( name != undefined )\r\n {\r\n if ( !( options.hideName ?? false ) )\r\n {\r\n let domName = document.createElement( 'div' );\r\n domName.className = 'lexcomponentname';\r\n\r\n if ( options.justifyName )\r\n {\r\n domName.classList.add( 'float-' + options.justifyName );\r\n }\r\n\r\n domName.innerHTML = name;\r\n domName.title = options.title ?? domName.innerHTML;\r\n domName.style.width = options.nameWidth || LX.DEFAULT_NAME_WIDTH;\r\n domName.style.minWidth = domName.style.width;\r\n\r\n root.appendChild( domName );\r\n root.domName = domName;\r\n\r\n const that = this;\r\n\r\n // Copy-paste info\r\n domName.addEventListener( 'contextmenu', function( e )\r\n {\r\n e.preventDefault();\r\n that.oncontextmenu( e );\r\n } );\r\n\r\n if ( !( options.skipReset ?? false ) && ( value != null ) )\r\n {\r\n this._addResetProperty( domName, function( el: any, event: any )\r\n {\r\n that.set( that._initialValue, false, event );\r\n el.style.display = 'none'; // Og value, don't show it\r\n } );\r\n }\r\n }\r\n }\r\n else\r\n {\r\n options.hideName = true;\r\n }\r\n\r\n if ( options.signal )\r\n {\r\n LX.addSignal( options.signal, this );\r\n }\r\n\r\n this.root = root;\r\n this.root.jsInstance = this;\r\n this.options = options;\r\n }\r\n\r\n static _dispatchEvent( element: any, type: any, data?: any, bubbles?: any, cancelable?: any )\r\n {\r\n let event = new CustomEvent( type, { 'detail': data, 'bubbles': bubbles, 'cancelable': cancelable } );\r\n element.dispatchEvent( event );\r\n }\r\n\r\n _addResetProperty( container: any, callback: any )\r\n {\r\n const domEl = LX.makeIcon( 'Undo2', { iconClass: 'ml-0 mr-1 px-1', title: 'Reset' } );\r\n domEl.style.display = 'none';\r\n domEl.addEventListener( 'click', callback.bind( domEl, domEl ) );\r\n container.appendChild( domEl );\r\n return domEl;\r\n }\r\n\r\n _canPaste()\r\n {\r\n const clipboard = navigator.clipboard as any;\r\n let pasteAllowed: boolean = this.type === ComponentType.CUSTOM\r\n ? ( clipboard.customIdx !== undefined && this.customIdx == clipboard.customIdx )\r\n : clipboard.type === this.type;\r\n\r\n pasteAllowed = pasteAllowed && ( this.disabled !== true );\r\n\r\n if ( this.onAllowPaste )\r\n {\r\n pasteAllowed = this.onAllowPaste( pasteAllowed );\r\n }\r\n\r\n return pasteAllowed;\r\n }\r\n\r\n _trigger( event: any, callback: any, scope: any = this )\r\n {\r\n if ( !callback )\r\n {\r\n return;\r\n }\r\n\r\n callback.call( scope, event.value, event.domEvent, event.name );\r\n }\r\n\r\n value()\r\n {\r\n if ( this.onGetValue )\r\n {\r\n return this.onGetValue();\r\n }\r\n\r\n console.warn( \"Can't get value of \" + this.typeName() );\r\n }\r\n\r\n set( value: any, skipCallback?: boolean, event?: any )\r\n {\r\n if ( this.onSetValue )\r\n {\r\n let resetButton = this.root.querySelector( '.lexcomponentname .lexicon' );\r\n if ( resetButton )\r\n {\r\n resetButton.style.display = value != this.value() ? 'block' : 'none';\r\n\r\n const equalInitial = value.constructor === Array\r\n ? ( function arraysEqual( a, b )\r\n {\r\n if ( a === b ) return true;\r\n if ( a == null || b == null ) return false;\r\n if ( a.length !== b.length ) return false;\r\n for ( var i = 0; i < a.length; ++i )\r\n {\r\n if ( a[i] !== b[i] ) return false;\r\n }\r\n return true;\r\n } )( value, this._initialValue )\r\n : ( value == this._initialValue );\r\n\r\n resetButton.style.display = !equalInitial ? 'block' : 'none';\r\n }\r\n\r\n return this.onSetValue( value, skipCallback ?? false, event );\r\n }\r\n\r\n console.warn( `Can't set value of ${this.typeName()}` );\r\n }\r\n\r\n oncontextmenu( e: any )\r\n {\r\n if ( BaseComponent.NO_CONTEXT_TYPES.includes( this.type ) )\r\n {\r\n return;\r\n }\r\n\r\n LX.addContextMenu( this.typeName(), e, ( c: ContextMenu ) => {\r\n c.add( 'Copy', () => {\r\n this.copy();\r\n } );\r\n c.add( 'Paste', { disabled: !this._canPaste(), callback: () => {\r\n this.paste();\r\n } } );\r\n } );\r\n }\r\n\r\n copy()\r\n {\r\n const clipboard = navigator.clipboard as any;\r\n clipboard.type = this.type;\r\n clipboard.customIdx = this.customIdx;\r\n clipboard.data = this.value();\r\n clipboard.writeText( clipboard.data );\r\n }\r\n\r\n paste()\r\n {\r\n if ( !this._canPaste() )\r\n {\r\n return;\r\n }\r\n\r\n const clipboard = navigator.clipboard as any;\r\n this.set( clipboard.data );\r\n }\r\n\r\n typeName()\r\n {\r\n switch ( this.type )\r\n {\r\n case ComponentType.TEXT:\r\n return 'Text';\r\n case ComponentType.TEXTAREA:\r\n return 'TextArea';\r\n case ComponentType.BUTTON:\r\n return 'Button';\r\n case ComponentType.SELECT:\r\n return 'Select';\r\n case ComponentType.CHECKBOX:\r\n return 'Checkbox';\r\n case ComponentType.TOGGLE:\r\n return 'Toggle';\r\n case ComponentType.RADIO:\r\n return 'Radio';\r\n case ComponentType.COLOR:\r\n return 'Color';\r\n case ComponentType.RANGE:\r\n return 'Range';\r\n case ComponentType.NUMBER:\r\n return 'Number';\r\n case ComponentType.VECTOR:\r\n return 'Vector';\r\n case ComponentType.TREE:\r\n return 'Tree';\r\n case ComponentType.PROGRESS:\r\n return 'Progress';\r\n case ComponentType.FILE:\r\n return 'File';\r\n case ComponentType.LAYERS:\r\n return 'Layers';\r\n case ComponentType.ARRAY:\r\n return 'Array';\r\n case ComponentType.LIST:\r\n return 'List';\r\n case ComponentType.TAGS:\r\n return 'Tags';\r\n case ComponentType.CURVE:\r\n return 'Curve';\r\n case ComponentType.KNOB:\r\n return 'Knob';\r\n case ComponentType.SIZE:\r\n return 'Size';\r\n case ComponentType.PAD:\r\n return 'Pad';\r\n case ComponentType.FORM:\r\n return 'Form';\r\n case ComponentType.DIAL:\r\n return 'Dial';\r\n case ComponentType.COUNTER:\r\n return 'Counter';\r\n case ComponentType.TABLE:\r\n return 'Table';\r\n case ComponentType.TABS:\r\n return 'Tabs';\r\n case ComponentType.DATE:\r\n return 'Date';\r\n case ComponentType.MAP2D:\r\n return 'Map2D';\r\n case ComponentType.RATE:\r\n return 'Rate';\r\n case ComponentType.LABEL:\r\n return 'Label';\r\n case ComponentType.BLANK:\r\n return 'Blank';\r\n case ComponentType.CUSTOM:\r\n return this.customName;\r\n }\r\n\r\n console.error( `Unknown Component type: ${this.type}` );\r\n }\r\n\r\n refresh( value?: any )\r\n {\r\n }\r\n}\r\n\r\nLX.BaseComponent = BaseComponent;\r\n","// Button.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\n\r\n/**\r\n * @class Button\r\n * @description Button Component\r\n */\r\n\r\nexport class Button extends BaseComponent\r\n{\r\n selectable: boolean = false;\r\n callback?: any;\r\n\r\n setState: ( v: any, b?: boolean ) => void;\r\n swap?: ( b?: boolean ) => void;\r\n\r\n constructor( name: string | null, value?: string, callback?: any, options: any = {} )\r\n {\r\n super( ComponentType.BUTTON, name, null, options );\r\n\r\n this.callback = callback;\r\n this.selectable = options.selectable ?? this.selectable;\r\n\r\n this.onGetValue = () => {\r\n const isSelected = LX.hasClass( wValue, 'selected' );\r\n const swapInput = wValue.querySelector( 'input' );\r\n return swapInput ? swapInput.checked : ( this.selectable ? isSelected : value );\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n if ( ( options.swap ?? false ) )\r\n {\r\n this.setState( newValue, skipCallback );\r\n return;\r\n }\r\n\r\n // No-swap buttons\r\n\r\n wValue.innerHTML = '';\r\n\r\n if ( options.icon )\r\n {\r\n const icon = LX.makeIcon( options.icon );\r\n wValue.prepend( icon );\r\n }\r\n else if ( options.img )\r\n {\r\n let img = document.createElement( 'img' );\r\n img.src = options.img;\r\n wValue.prepend( img );\r\n }\r\n else\r\n {\r\n wValue.innerHTML = `<span>${( newValue ?? '' )}</span>`;\r\n }\r\n };\r\n\r\n this.onResize = ( rect: any ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n wValue.style.width = `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n // In case of swap, set if a change has to be performed\r\n this.setState = function( v, skipCallback )\r\n {\r\n const swapInput = wValue.querySelector( 'input' );\r\n\r\n if ( swapInput )\r\n {\r\n swapInput.checked = v;\r\n }\r\n else if ( this.selectable )\r\n {\r\n if ( options.parent )\r\n {\r\n options.parent.querySelectorAll( '.lexbutton.selected' ).forEach( ( b: HTMLElement ) => {\r\n if ( b == wValue ) return;\r\n b.classList.remove( 'selected' );\r\n } );\r\n }\r\n\r\n wValue.classList.toggle( 'selected', v );\r\n }\r\n\r\n if ( !skipCallback )\r\n {\r\n this._trigger(\r\n new IEvent( name, swapInput ? swapInput.checked : ( this.selectable ? v : value ), null ),\r\n callback\r\n );\r\n }\r\n };\r\n\r\n var wValue: any = document.createElement( 'button' );\r\n wValue.title = options.tooltip ? '' : ( options.title ?? '' );\r\n wValue.className = 'lexbutton px-3 ' + ( options.buttonClass ?? '' );\r\n this.root.appendChild( wValue );\r\n\r\n if ( options.selected )\r\n {\r\n wValue.classList.add( 'selected' );\r\n }\r\n\r\n if ( options.img )\r\n {\r\n let img = document.createElement( 'img' );\r\n img.src = options.img;\r\n wValue.prepend( img );\r\n }\r\n else if ( options.icon )\r\n {\r\n const icon = LX.makeIcon( options.icon, { iconClass: options.iconClass, svgClass: options.svgClass } );\r\n const iconPosition = options.iconPosition ?? 'cover';\r\n\r\n // Default\r\n if ( iconPosition == 'cover' || ( options.swap !== undefined ) )\r\n {\r\n wValue.prepend( icon );\r\n }\r\n else\r\n {\r\n wValue.innerHTML = `<span>${( value || '' )}</span>`;\r\n\r\n if ( iconPosition == 'start' )\r\n {\r\n wValue.querySelector( 'span' ).prepend( icon );\r\n }\r\n // \"end\"\r\n else\r\n {\r\n wValue.querySelector( 'span' ).appendChild( icon );\r\n }\r\n }\r\n\r\n wValue.classList.add( 'justify-center' );\r\n }\r\n else\r\n {\r\n wValue.innerHTML = `<span>${( value || '' )}</span>`;\r\n }\r\n\r\n if ( options.fileInput )\r\n {\r\n const fileInput = document.createElement( 'input' );\r\n fileInput.type = 'file';\r\n fileInput.className = 'file-input';\r\n fileInput.style.display = 'none';\r\n wValue.appendChild( fileInput );\r\n\r\n fileInput.addEventListener( 'change', function( e: any )\r\n {\r\n if ( !e.target ) return;\r\n const files = e.target.files;\r\n if ( !files.length ) return;\r\n\r\n const reader = new FileReader();\r\n if ( options.fileInputType === 'text' ) reader.readAsText( files[0] );\r\n else if ( options.fileInputType === 'buffer' ) reader.readAsArrayBuffer( files[0] );\r\n else if ( options.fileInputType === 'bin' ) reader.readAsBinaryString( files[0] );\r\n else if ( options.fileInputType === 'url' ) reader.readAsDataURL( files[0] );\r\n reader.onload = ( e ) => {\r\n callback.call( this, e.target?.result, files[0] );\r\n };\r\n } );\r\n }\r\n\r\n if ( options.disabled )\r\n {\r\n this.disabled = true;\r\n wValue.setAttribute( 'disabled', true );\r\n }\r\n\r\n let trigger = wValue;\r\n\r\n if ( options.swap )\r\n {\r\n wValue.classList.add( 'swap' );\r\n wValue.querySelector( 'a' ).classList.add( 'swap-off' );\r\n\r\n const input = document.createElement( 'input' );\r\n input.className = 'p-0 border-0';\r\n input.type = 'checkbox';\r\n wValue.prepend( input );\r\n\r\n const swapIcon = LX.makeIcon( options.swap, { iconClass: 'swap-on' } );\r\n wValue.appendChild( swapIcon );\r\n\r\n this.swap = function( skipCallback?: boolean )\r\n {\r\n const swapInput = wValue.querySelector( 'input' );\r\n swapInput.checked = !swapInput.checked;\r\n if ( !skipCallback )\r\n {\r\n trigger.click();\r\n }\r\n };\r\n }\r\n\r\n trigger.addEventListener( 'click', ( e: MouseEvent ) => {\r\n let isSelected;\r\n if ( this.selectable )\r\n {\r\n if ( options.parent )\r\n {\r\n options.parent.querySelectorAll( '.lexbutton.selected' ).forEach( ( b: HTMLElement ) => {\r\n if ( b == wValue ) return;\r\n b.classList.remove( 'selected' );\r\n } );\r\n }\r\n\r\n isSelected = wValue.classList.toggle( 'selected' );\r\n }\r\n\r\n if ( options.fileInput )\r\n {\r\n wValue.querySelector( '.file-input' ).click();\r\n }\r\n else if ( options.mustConfirm )\r\n {\r\n const swapInput = wValue.querySelector( 'input' );\r\n\r\n new LX.PopConfirm( wValue, {\r\n onConfirm: () => {\r\n if ( options.swap )\r\n {\r\n swapInput.checked = true;\r\n }\r\n\r\n this._trigger( new IEvent( name, value, e ), callback );\r\n },\r\n side: options.confirmSide,\r\n align: options.confirmAlign,\r\n confirmText: options.confirmText,\r\n cancelText: options.confirmCancelText,\r\n title: options.confirmTitle,\r\n content: options.confirmContent\r\n } );\r\n\r\n if ( options.swap )\r\n {\r\n swapInput.checked = false;\r\n }\r\n }\r\n else\r\n {\r\n const swapInput = wValue.querySelector( 'input' );\r\n this._trigger( new IEvent( name, swapInput?.checked ?? ( this.selectable ? isSelected : value ), e ),\r\n callback );\r\n }\r\n } );\r\n\r\n if ( options.tooltip )\r\n {\r\n LX.asTooltip( wValue, options.title ?? name );\r\n }\r\n\r\n LX.doAsync( this.onResize.bind( this ) );\r\n }\r\n\r\n click()\r\n {\r\n const buttonDOM: HTMLButtonElement = this.root.querySelector( 'button' );\r\n buttonDOM.click();\r\n }\r\n\r\n setSwapIcon( iconName: string )\r\n {\r\n const oldIcon = this.root.querySelector( '.swap-on' );\r\n if ( !oldIcon )\r\n {\r\n return;\r\n }\r\n\r\n const swapIcon = LX.makeIcon( iconName, { iconClass: 'swap-on' } );\r\n oldIcon.replaceWith( swapIcon );\r\n }\r\n}\r\n\r\nLX.Button = Button;\r\n","// Menubar.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\nimport { Button } from './Button';\r\n\r\n/**\r\n * @class Menubar\r\n */\r\n\r\nexport class Menubar\r\n{\r\n root: any;\r\n siblingArea: any;\r\n buttonContainer?: any;\r\n\r\n items: any[] = [];\r\n buttons: Record<string, any> = {};\r\n icons: any = {};\r\n shorts: any = {};\r\n\r\n focused: boolean = false;\r\n\r\n _currentDropdown?: any;\r\n\r\n constructor( items: any[], options: any = {} )\r\n {\r\n this.root = document.createElement( 'div' );\r\n this.root.className = 'lexmenubar';\r\n\r\n if ( options.float )\r\n {\r\n this.root.style.justifyContent = options.float;\r\n }\r\n\r\n this.items = items ?? [];\r\n\r\n this.createEntries();\r\n }\r\n\r\n _resetMenubar( focus?: boolean )\r\n {\r\n this.root.querySelectorAll( '.lexmenuentry' ).forEach( ( e: HTMLElement ) => {\r\n e.classList.remove( 'selected' );\r\n delete e.dataset['built'];\r\n } );\r\n\r\n if ( this._currentDropdown )\r\n {\r\n this._currentDropdown.destroy();\r\n this._currentDropdown = null;\r\n }\r\n\r\n // Next time we need to click again\r\n this.focused = focus ?? false;\r\n }\r\n\r\n /**\r\n * @method createEntries\r\n */\r\n\r\n createEntries()\r\n {\r\n for ( let item of this.items )\r\n {\r\n let key = item.name;\r\n let pKey = LX.getSupportedDOMName( key );\r\n\r\n // Item already created\r\n if ( this.root.querySelector( '#' + pKey ) )\r\n {\r\n continue;\r\n }\r\n\r\n let entry = document.createElement( 'div' );\r\n entry.className = 'lexmenuentry';\r\n entry.id = pKey;\r\n entry.innerHTML = '<span>' + key + '</span>';\r\n entry.tabIndex = 1;\r\n\r\n this.root.appendChild( entry );\r\n\r\n const _showEntry = () => {\r\n this._resetMenubar( true );\r\n entry.classList.add( 'selected' );\r\n entry.dataset['built'] = 'true';\r\n this._currentDropdown = LX.addDropdownMenu( entry, item.submenu ?? [], { side: 'bottom', align: 'start',\r\n onBlur: () => {\r\n this._resetMenubar();\r\n } } );\r\n };\r\n\r\n entry.addEventListener( 'mousedown', ( e ) => {\r\n e.preventDefault();\r\n } );\r\n\r\n entry.addEventListener( 'mouseup', ( e ) => {\r\n e.preventDefault();\r\n\r\n const f = item['callback'];\r\n if ( f )\r\n {\r\n f.call( this, key, entry, e );\r\n return;\r\n }\r\n\r\n _showEntry();\r\n\r\n this.focused = true;\r\n\r\n return false;\r\n } );\r\n\r\n entry.addEventListener( 'mouseover', ( e ) => {\r\n if ( this.focused && !( entry.dataset['built'] ?? false ) )\r\n {\r\n _showEntry();\r\n }\r\n } );\r\n }\r\n }\r\n\r\n /**\r\n * @method getButton\r\n * @param {String} name\r\n */\r\n\r\n getButton( name: string )\r\n {\r\n return this.buttons[name];\r\n }\r\n\r\n /**\r\n * @method getSubitems\r\n * @param {Object} item: parent item\r\n * @param {Array} tokens: split path strings\r\n */\r\n getSubitem( item: any, tokens: any[] ): any\r\n {\r\n for ( const s of item )\r\n {\r\n if ( s?.name != tokens[0] )\r\n {\r\n continue;\r\n }\r\n\r\n if ( tokens.length == 1 )\r\n {\r\n return s;\r\n }\r\n else if ( s.submenu )\r\n {\r\n tokens.shift();\r\n return this.getSubitem( s.submenu, tokens );\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @method getItem\r\n * @param {String} path\r\n */\r\n getItem( path: string )\r\n {\r\n // Process path\r\n const tokens = path.split( '/' );\r\n return this.getSubitem( this.items, tokens );\r\n }\r\n\r\n /**\r\n * @method setButtonIcon\r\n * @param {String} name\r\n * @param {String} icon\r\n * @param {Function} callback\r\n * @param {Object} options\r\n */\r\n\r\n setButtonIcon( name: string, icon: string, callback: any, options: any = {} )\r\n {\r\n if ( !name )\r\n {\r\n throw ( 'Set Button Name!' );\r\n }\r\n\r\n let button = this.buttons[name];\r\n // If the button already exists, delete it\r\n // since only one button of this type can exist\r\n if ( button )\r\n {\r\n delete this.buttons[name];\r\n LX.deleteElement( button.root );\r\n }\r\n\r\n // Otherwise, create it\r\n button = new Button( name, undefined, callback, {\r\n title: name,\r\n buttonClass: 'lexmenubutton main bg-none',\r\n disabled: options.disabled,\r\n icon,\r\n svgClass: 'xl',\r\n hideName: true,\r\n swap: options.swap\r\n } );\r\n\r\n if ( options.float == 'right' )\r\n {\r\n button.root.right = true;\r\n }\r\n\r\n if ( this.root.lastChild && this.root.lastChild.right )\r\n {\r\n this.root.lastChild.before( button.root );\r\n }\r\n else if ( options.float == 'left' )\r\n {\r\n this.root.prepend( button.root );\r\n }\r\n else\r\n {\r\n this.root.appendChild( button.root );\r\n }\r\n\r\n this.buttons[name] = button;\r\n }\r\n\r\n /**\r\n * @method setButtonImage\r\n * @param {String} name\r\n * @param {String} src\r\n * @param {Function} callback\r\n * @param {Object} options\r\n */\r\n\r\n setButtonImage( name: string, src: string, callback: any, options: any = {} )\r\n {\r\n if ( !name )\r\n {\r\n throw ( 'Set Button Name!' );\r\n }\r\n\r\n let button = this.buttons[name];\r\n if ( button )\r\n {\r\n button.querySelector( 'img' ).src = src;\r\n return;\r\n }\r\n\r\n // Otherwise, create it\r\n button = document.createElement( 'div' );\r\n const disabled = options.disabled ?? false;\r\n button.className = 'lexmenubutton main' + ( disabled ? ' disabled' : '' );\r\n button.title = name;\r\n button.innerHTML = \"<a><image src='\" + src + \"' class='lexicon' style='height:32px;'></a>\";\r\n\r\n if ( options.float == 'right' )\r\n {\r\n button.right = true;\r\n }\r\n\r\n if ( this.root.lastChild && this.root.lastChild.right )\r\n {\r\n this.root.lastChild.before( button );\r\n }\r\n else if ( options.float == 'left' )\r\n {\r\n this.root.prepend( button );\r\n }\r\n else\r\n {\r\n this.root.appendChild( button );\r\n }\r\n\r\n const _b = button.querySelector( 'a' );\r\n\r\n _b.addEventListener( 'mousedown', ( e: MouseEvent ) => {\r\n e.preventDefault();\r\n } );\r\n\r\n _b.addEventListener( 'mouseup', ( e: MouseEvent ) => {\r\n if ( callback && !disabled )\r\n {\r\n callback.call( this, _b, e );\r\n }\r\n } );\r\n\r\n this.buttons[name] = button;\r\n }\r\n\r\n /**\r\n * @method addButton\r\n * @param {Array} buttons\r\n * @param {Object} options\r\n * float: center (Default), right\r\n */\r\n\r\n addButtons( buttons: any[], options: any = {} )\r\n {\r\n if ( !buttons )\r\n {\r\n throw ( 'No buttons to add!' );\r\n }\r\n\r\n if ( !this.buttonContainer )\r\n {\r\n this.buttonContainer = document.createElement( 'div' );\r\n this.buttonContainer.className = 'lexmenubuttons';\r\n this.buttonContainer.classList.add( options.float ?? 'center' );\r\n\r\n if ( options.float == 'right' )\r\n {\r\n this.buttonContainer.right = true;\r\n }\r\n\r\n if ( this.root.lastChild && this.root.lastChild.right )\r\n {\r\n this.root.lastChild.before( this.buttonContainer );\r\n }\r\n else\r\n {\r\n this.root.appendChild( this.buttonContainer );\r\n }\r\n }\r\n\r\n for ( const data of buttons )\r\n {\r\n const title = data.title;\r\n const button = new Button( title, data.label, data.callback, {\r\n title,\r\n buttonClass: 'bg-none',\r\n disabled: data.disabled,\r\n icon: data.icon,\r\n hideName: true,\r\n swap: data.swap,\r\n iconPosition: 'start'\r\n } );\r\n this.buttonContainer.appendChild( button.root );\r\n\r\n if ( title )\r\n {\r\n this.buttons[title] = button;\r\n }\r\n }\r\n }\r\n}\r\n","// Tabs.ts @jxarco\r\n\r\nimport { Area } from './../core/Area';\r\nimport { LX } from './../core/Namespace';\r\n\r\n/**\r\n * @class Tabs\r\n */\r\n\r\nexport class Tabs\r\n{\r\n static TAB_ID = 0;\r\n\r\n root: any;\r\n area: Area;\r\n tabs: any = {};\r\n tabDOMs: any = {};\r\n thumb?: any;\r\n\r\n selected: any = null;\r\n folding: boolean = false;\r\n folded: boolean = false;\r\n\r\n onclose: ( s: string ) => void;\r\n\r\n constructor( area: Area, options: any = {} )\r\n {\r\n this.onclose = options.onclose;\r\n\r\n let container = document.createElement( 'div' );\r\n container.className = 'lexareatabs ' + ( options.fit ? 'fit' : 'row' );\r\n\r\n const folding = options.folding ?? false;\r\n if ( folding ) container.classList.add( 'folding' );\r\n\r\n let that: any = this;\r\n\r\n container.addEventListener( 'dragenter', function( e: any )\r\n {\r\n e.preventDefault(); // Prevent default action (open as link for some elements)\r\n this.classList.add( 'dockingtab' );\r\n } );\r\n\r\n container.addEventListener( 'dragleave', function( e: any )\r\n {\r\n e.preventDefault(); // Prevent default action (open as link for some elements)\r\n if ( this.contains( e.relatedTarget ) ) return; // Still inside\r\n this.classList.remove( 'dockingtab' );\r\n } );\r\n\r\n container.addEventListener( 'drop', function( e: any )\r\n {\r\n e.preventDefault(); // Prevent default action (open as link for some elements)\r\n\r\n const tabId = e.dataTransfer.getData( 'source' );\r\n const tabDom: any = document.getElementById( tabId );\r\n if ( !tabDom ) return;\r\n\r\n const sourceContainer: any = tabDom.parentElement;\r\n const target = e.target;\r\n const rect = target.getBoundingClientRect();\r\n\r\n if ( e.offsetX < ( rect.width * 0.5 ) )\r\n {\r\n this.insertBefore( tabDom, target );\r\n }\r\n else if ( target.nextElementSibling )\r\n {\r\n this.insertBefore( tabDom, target.nextElementSibling );\r\n }\r\n else\r\n {\r\n this.appendChild( tabDom );\r\n }\r\n\r\n {\r\n // Update childIndex for fit mode tabs in source container\r\n sourceContainer.childNodes.forEach( ( c: any, idx: number ) => c.childIndex = idx - 1 );\r\n\r\n // If needed, set last tab of source container active\r\n const sourceAsFit = ( /true/ ).test( e.dataTransfer.getData( 'fit' ) );\r\n let newSelected: any = null;\r\n if ( sourceContainer.childElementCount == ( sourceAsFit ? 2 : 1 ) )\r\n {\r\n newSelected = sourceContainer.lastChild; // single tab or thumb first (fit mode)\r\n }\r\n else\r\n {\r\n const sourceSelected = sourceContainer.querySelector( '.selected' );\r\n newSelected = sourceSelected ?? sourceContainer.childNodes[sourceAsFit ? 1 : 0];\r\n }\r\n\r\n newSelected._forceSelect = true;\r\n newSelected.click();\r\n }\r\n\r\n // Update childIndex for fit mode tabs in target container\r\n this.childNodes.forEach( ( c: any, idx: number ) => c.childIndex = idx - 1 );\r\n\r\n const content = document.getElementById( tabId + '_content' );\r\n that.area.attach( content );\r\n this.classList.remove( 'dockingtab' );\r\n\r\n // Change tabs instance and select on drop\r\n tabDom.instance = that;\r\n tabDom._forceSelect = true;\r\n tabDom.click();\r\n\r\n // Store info\r\n that.tabs[tabDom.dataset['name']] = content;\r\n } );\r\n\r\n area.root.classList.add( 'lexareatabscontainer' );\r\n\r\n const [ tabButtons, content ] = area.split( { type: 'vertical', sizes: options.sizes ?? 'auto', resize: false,\r\n top: 2 } );\r\n tabButtons.attach( container );\r\n\r\n if ( options.parentClass && container.parentElement )\r\n {\r\n container.parentElement.className += ` ${options.parentClass}`;\r\n }\r\n\r\n this.area = content;\r\n this.area.root.className += ' lexareatabscontent';\r\n\r\n if ( options.contentClass )\r\n {\r\n this.area.root.className += ` ${options.contentClass}`;\r\n }\r\n\r\n this.selected = null;\r\n this.root = container;\r\n\r\n if ( options.fit )\r\n {\r\n // Create movable element\r\n let mEl = document.createElement( 'span' );\r\n mEl.className = 'lexareatab thumb';\r\n this.thumb = mEl;\r\n this.root.appendChild( mEl );\r\n\r\n const resizeObserver = new ResizeObserver( ( entries ) => {\r\n const tabEl = this.thumb.item;\r\n if ( !tabEl ) return;\r\n var transition = this.thumb.style.transition;\r\n this.thumb.style.transition = 'none';\r\n this.thumb.style.transform = 'translate( ' + ( tabEl.childIndex * tabEl.offsetWidth ) + 'px )';\r\n this.thumb.style.width = ( tabEl.offsetWidth ) + 'px';\r\n LX.flushCss( this.thumb );\r\n this.thumb.style.transition = transition;\r\n } );\r\n\r\n resizeObserver.observe( this.area.root );\r\n }\r\n\r\n // debug\r\n if ( folding )\r\n {\r\n this.folded = true;\r\n this.folding = folding;\r\n\r\n if ( folding == 'up' )\r\n {\r\n LX.insertChildAtIndex( area.root, area.sections[1].root, 0 );\r\n }\r\n\r\n // Listen resize event on parent area\r\n const resizeObserver = new ResizeObserver( ( entries ) => {\r\n for ( const entry of entries )\r\n {\r\n const bb = entry.contentRect;\r\n const sibling = area.parentArea?.sections[0].root;\r\n const addOffset = true; // hardcoded...\r\n sibling.style.height = 'calc(100% - ' + ( ( addOffset ? 42 : 0 ) + bb.height ) + 'px )';\r\n }\r\n } );\r\n\r\n resizeObserver.observe( this.area.root );\r\n this.area.root.classList.add( 'folded' );\r\n }\r\n }\r\n\r\n add( name: string, content: any, options: any = {} )\r\n {\r\n let isSelected = options.selected ?? false;\r\n\r\n if ( isSelected )\r\n {\r\n this.root.querySelectorAll( 'span' ).forEach( ( s: HTMLElement ) => s.classList.remove( 'selected' ) );\r\n const pseudoParent = this.area.root.querySelector( ':scope > .pseudoparent-tabs' );\r\n const contentRoot = pseudoParent ?? this.area.root;\r\n contentRoot.querySelectorAll( ':scope > .lextabcontent' ).forEach( ( s: HTMLElement ) =>\r\n s.style.display = 'none'\r\n );\r\n }\r\n\r\n isSelected = !Object.keys( this.tabs ).length && !this.folding ? true : isSelected;\r\n\r\n let contentEl = content.root ? content.root : content;\r\n contentEl.originalDisplay = contentEl.style.display;\r\n contentEl.style.display = isSelected ? contentEl.originalDisplay : 'none';\r\n contentEl.classList.add( 'lextabcontent' );\r\n\r\n // Process icon\r\n if ( options.icon )\r\n {\r\n if ( !options.icon.includes( '.' ) )\r\n { // Not a file\r\n const classes = options.icon.split( ' ' );\r\n options.icon =\r\n LX.makeIcon( classes[0], { svgClass: 'sm ' + classes.slice( 0 ).join( ' ' ) } ).innerHTML;\r\n }\r\n // an image..\r\n else\r\n {\r\n const rootPath = 'https://raw.githubusercontent.com/jxarco/lexgui.js/master/';\r\n options.icon = \"<img src='\" + ( rootPath + options.icon ) + \"'>\";\r\n }\r\n }\r\n\r\n // Create tab\r\n let tabEl: any = document.createElement( 'span' );\r\n tabEl.dataset['name'] = name;\r\n tabEl.className = 'lexareatab flex flex-row gap-1' + ( isSelected ? ' selected' : '' );\r\n tabEl.innerHTML = ( options.icon ?? '' ) + name;\r\n tabEl.id = name.replace( /\\s/g, '' ) + Tabs.TAB_ID++;\r\n tabEl.title = options.title ?? '';\r\n tabEl.selected = isSelected ?? false;\r\n tabEl.fixed = options.fixed;\r\n tabEl.instance = this;\r\n contentEl.id = tabEl.id + '_content';\r\n\r\n if ( options.badge )\r\n {\r\n const asChild = options.badge.asChild ?? false;\r\n const badgeOptions: any = {};\r\n\r\n if ( asChild )\r\n {\r\n badgeOptions.parent = tabEl;\r\n }\r\n\r\n tabEl.innerHTML += LX.badge( options.badge.content ?? '', options.badge.className, badgeOptions );\r\n }\r\n\r\n if ( tabEl.selected )\r\n {\r\n this.selected = name;\r\n }\r\n\r\n tabEl.addEventListener( 'click', ( e: MouseEvent ) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n const scope = tabEl.instance;\r\n\r\n if ( !tabEl.fixed )\r\n {\r\n // For folding tabs\r\n const lastValue = tabEl.selected;\r\n tabEl.parentElement.querySelectorAll( 'span' ).forEach( ( s: any ) => s.selected = false );\r\n tabEl.selected = !lastValue || ( tabEl._forceSelect ? true : false );\r\n // Manage selected\r\n tabEl.parentElement.querySelectorAll( 'span' ).forEach( ( s: any ) =>\r\n s.classList.remove( 'selected' )\r\n );\r\n tabEl.classList.toggle( 'selected', tabEl.selected );\r\n // Manage visibility\r\n const pseudoParent = scope.area.root.querySelector( ':scope > .pseudoparent-tabs' );\r\n const contentRoot = pseudoParent ?? scope.area.root;\r\n contentRoot.querySelectorAll( ':scope > .lextabcontent' ).forEach( ( s: any ) =>\r\n s.style.display = 'none'\r\n );\r\n contentEl.style.display = contentEl.originalDisplay;\r\n scope.selected = tabEl.dataset.name;\r\n }\r\n\r\n if ( scope.folding )\r\n {\r\n scope.folded = tabEl.selected;\r\n scope.area.root.classList.toggle( 'folded', !scope.folded );\r\n }\r\n\r\n if ( options.onSelect )\r\n {\r\n options.onSelect( e, tabEl.dataset.name );\r\n }\r\n\r\n if ( scope.thumb )\r\n {\r\n scope.thumb.style.transform = 'translate( ' + ( tabEl.childIndex * tabEl.offsetWidth ) + 'px )';\r\n scope.thumb.style.width = ( tabEl.offsetWidth ) + 'px';\r\n scope.thumb.item = tabEl;\r\n }\r\n\r\n delete tabEl._forceSelect;\r\n } );\r\n\r\n tabEl.addEventListener( 'contextmenu', ( e: any ) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if ( options.onContextMenu )\r\n {\r\n options.onContextMenu( e, tabEl.dataset.name );\r\n }\r\n } );\r\n\r\n if ( options.allowDelete ?? false )\r\n {\r\n tabEl.addEventListener( 'mousedown', ( e: MouseEvent ) => {\r\n if ( e.button == LX.MOUSE_MIDDLE_CLICK )\r\n {\r\n e.preventDefault();\r\n }\r\n } );\r\n\r\n tabEl.addEventListener( 'mouseup', ( e: MouseEvent ) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if ( e.button == LX.MOUSE_MIDDLE_CLICK )\r\n {\r\n this.delete( tabEl.dataset['name'] );\r\n }\r\n } );\r\n }\r\n\r\n tabEl.setAttribute( 'draggable', true );\r\n tabEl.addEventListener( 'dragstart', ( e: any ) => {\r\n const sourceAsFit = !!this.thumb;\r\n if ( tabEl.parentElement.childNodes.length == ( sourceAsFit ? 2 : 1 ) )\r\n {\r\n e.preventDefault();\r\n return;\r\n }\r\n e.dataTransfer.setData( 'source', e.target.id );\r\n e.dataTransfer.setData( 'fit', sourceAsFit );\r\n } );\r\n\r\n // Attach content\r\n const indexOffset = options.indexOffset ?? -1;\r\n tabEl.childIndex = this.root.childElementCount + indexOffset;\r\n LX.insertChildAtIndex( this.root, tabEl, tabEl.childIndex + 1 );\r\n this.area.attach( contentEl );\r\n this.tabDOMs[name] = tabEl;\r\n this.tabs[name] = content;\r\n\r\n setTimeout( () => {\r\n if ( options.onCreate )\r\n {\r\n options.onCreate.call( this, this.area.root.getBoundingClientRect() );\r\n }\r\n\r\n if ( isSelected && this.thumb )\r\n {\r\n this.thumb.classList.add( 'no-transition' );\r\n this.thumb.style.transform = 'translate( ' + ( tabEl.childIndex * tabEl.offsetWidth ) + 'px )';\r\n this.thumb.style.width = ( tabEl.offsetWidth ) + 'px';\r\n this.thumb.item = tabEl;\r\n this.thumb.classList.remove( 'no-transition' );\r\n }\r\n }, 10 );\r\n }\r\n\r\n select( name: string )\r\n {\r\n if ( !this.tabDOMs[name] )\r\n {\r\n return;\r\n }\r\n\r\n this.tabDOMs[name].click();\r\n }\r\n\r\n delete( name: string )\r\n {\r\n if ( this.selected == name )\r\n {\r\n this.selected = null;\r\n }\r\n\r\n const tabEl = this.tabDOMs[name];\r\n\r\n if ( !tabEl || tabEl.fixed )\r\n {\r\n return;\r\n }\r\n\r\n if ( this.onclose )\r\n {\r\n this.onclose( name );\r\n }\r\n\r\n // Delete tab element\r\n this.tabDOMs[name].remove();\r\n delete this.tabDOMs[name];\r\n\r\n // Delete content\r\n this.tabs[name].remove();\r\n delete this.tabs[name];\r\n\r\n // Select last tab\r\n const lastTab = this.root.lastChild;\r\n if ( lastTab && !lastTab.fixed )\r\n {\r\n this.root.lastChild.click();\r\n }\r\n }\r\n}\r\n\r\nLX.Tabs = Tabs;\r\n","// NumberInput.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\n\r\n/**\r\n * @class NumberInput\r\n * @description NumberInput Component\r\n */\r\n\r\nexport class NumberInput extends BaseComponent\r\n{\r\n setLimits: ( newMin: number | null, newMax: number | null, newStep: number | null ) => void;\r\n\r\n constructor( name: string | null, value: number, callback: any, options: any = {} )\r\n {\r\n super( ComponentType.NUMBER, name, value, options );\r\n\r\n this.onGetValue = () => {\r\n return value;\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n if ( isNaN( newValue ) )\r\n {\r\n return;\r\n }\r\n\r\n value = LX.clamp( +newValue, +vecinput.min, +vecinput.max );\r\n vecinput.value = value = LX.round( value, options.precision );\r\n\r\n // Update slider!\r\n const slider: any = box.querySelector( '.lexinputslider' );\r\n if ( slider )\r\n {\r\n slider.value = value;\r\n }\r\n\r\n if ( !skipCallback )\r\n {\r\n this._trigger( new IEvent( name, value, event ), callback );\r\n }\r\n };\r\n\r\n this.onResize = ( rect ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n container.style.width = options.inputWidth ?? `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n this.setLimits = ( newMin, newMax, newStep ) => {};\r\n\r\n var container = document.createElement( 'div' );\r\n container.className = 'lexnumber';\r\n this.root.appendChild( container );\r\n\r\n let box = document.createElement( 'div' );\r\n box.className = 'numberbox';\r\n container.appendChild( box );\r\n\r\n let valueBox = LX.makeContainer( [ 'auto', '100%' ], 'relative flex flex-row cursor-text', '', box );\r\n\r\n let vecinput: any = document.createElement( 'input' );\r\n vecinput.id = 'number_' + LX.guidGenerator();\r\n vecinput.className = 'vecinput';\r\n vecinput.min = options.min ?? -1e24;\r\n vecinput.max = options.max ?? 1e24;\r\n vecinput.step = options.step ?? 'any';\r\n vecinput.type = 'number';\r\n\r\n if ( value.constructor == Number )\r\n {\r\n value = LX.clamp( value, +vecinput.min, +vecinput.max );\r\n value = LX.round( value, options.precision );\r\n }\r\n\r\n vecinput.value = vecinput.iValue = value;\r\n valueBox.appendChild( vecinput );\r\n\r\n const dragIcon = LX.makeIcon( 'MoveVertical', { iconClass: 'drag-icon hidden-opacity', svgClass: 'sm' } );\r\n valueBox.appendChild( dragIcon );\r\n\r\n if ( options.units )\r\n {\r\n let unitBox = LX.makeContainer( [ 'auto', 'auto' ], 'px-2 bg-secondary content-center', options.units,\r\n valueBox, { 'word-break': 'keep-all' } );\r\n vecinput.unitBox = unitBox;\r\n }\r\n\r\n if ( options.disabled )\r\n {\r\n this.disabled = vecinput.disabled = true;\r\n }\r\n\r\n // Add slider below\r\n if ( !options.skipSlider && options.min !== undefined && options.max !== undefined )\r\n {\r\n let sliderBox = LX.makeContainer( [ '100%', 'auto' ], 'z-1 input-box', '', box );\r\n let slider: any = document.createElement( 'input' );\r\n slider.className = 'lexinputslider';\r\n slider.min = options.min;\r\n slider.max = options.max;\r\n slider.step = options.step ?? 1;\r\n slider.type = 'range';\r\n slider.value = value;\r\n slider.disabled = this.disabled;\r\n\r\n slider.addEventListener( 'input', ( e: InputEvent ) => {\r\n this.set( slider.valueAsNumber, false, e );\r\n }, false );\r\n\r\n slider.addEventListener( 'mousedown', function( e: MouseEvent )\r\n {\r\n if ( options.onPress )\r\n {\r\n options.onPress.bind( slider )( e, slider );\r\n }\r\n }, false );\r\n\r\n slider.addEventListener( 'mouseup', function( e: MouseEvent )\r\n {\r\n if ( options.onRelease )\r\n {\r\n options.onRelease.bind( slider )( e, slider );\r\n }\r\n }, false );\r\n\r\n sliderBox.appendChild( slider );\r\n\r\n // Method to change min, max, step parameters\r\n this.setLimits = ( newMin, newMax, newStep ) => {\r\n vecinput.min = slider.min = newMin ?? vecinput.min;\r\n vecinput.max = slider.max = newMax ?? vecinput.max;\r\n vecinput.step = newStep ?? vecinput.step;\r\n slider.step = newStep ?? slider.step;\r\n this.set( value, true );\r\n };\r\n }\r\n\r\n vecinput.addEventListener( 'input', function( e: InputEvent )\r\n {\r\n value = +vecinput.valueAsNumber;\r\n value = LX.round( value, options.precision );\r\n }, false );\r\n\r\n vecinput.addEventListener( 'wheel', ( e: WheelEvent ) => {\r\n e.preventDefault();\r\n if ( vecinput !== document.activeElement )\r\n {\r\n return;\r\n }\r\n let mult = options.step ?? 1;\r\n if ( e.shiftKey ) mult *= 10;\r\n else if ( e.altKey ) mult *= 0.1;\r\n value = +vecinput.valueAsNumber - mult * ( e.deltaY > 0 ? 1 : -1 );\r\n this.set( value, false, e );\r\n }, { passive: false } );\r\n\r\n vecinput.addEventListener( 'change', ( e: InputEvent ) => {\r\n this.set( vecinput.valueAsNumber, false, e );\r\n }, { passive: false } );\r\n\r\n // Add drag input\r\n\r\n var that = this;\r\n\r\n let innerMouseDown = ( e: MouseEvent ) => {\r\n if ( ( document.activeElement == vecinput ) || ( e.button != LX.MOUSE_LEFT_CLICK ) )\r\n {\r\n return;\r\n }\r\n\r\n var doc = that.root.ownerDocument;\r\n doc.addEventListener( 'mousemove', innerMouseMove );\r\n doc.addEventListener( 'mouseup', innerMouseUp );\r\n document.body.classList.add( 'noevents' );\r\n dragIcon.classList.remove( 'hidden-opacity' );\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n\r\n if ( !document.pointerLockElement )\r\n {\r\n valueBox.requestPointerLock();\r\n }\r\n\r\n if ( options.onPress )\r\n {\r\n options.onPress.bind( vecinput )( e, vecinput );\r\n }\r\n };\r\n\r\n let innerMouseMove = ( e: MouseEvent ) => {\r\n let dt = -e.movementY;\r\n\r\n if ( dt != 0 )\r\n {\r\n let mult = options.step ?? 1;\r\n if ( e.shiftKey ) mult *= 10;\r\n else if ( e.altKey ) mult *= 0.1;\r\n value = +vecinput.valueAsNumber + mult * dt;\r\n this.set( value, false, e );\r\n }\r\n\r\n e.stopPropagation();\r\n e.preventDefault();\r\n };\r\n\r\n let innerMouseUp = ( e: MouseEvent ) => {\r\n var doc = that.root.ownerDocument;\r\n doc.removeEventListener( 'mousemove', innerMouseMove );\r\n doc.removeEventListener( 'mouseup', innerMouseUp );\r\n document.body.classList.remove( 'noevents' );\r\n dragIcon.classList.add( 'hidden-opacity' );\r\n\r\n if ( document.pointerLockElement )\r\n {\r\n document.exitPointerLock();\r\n }\r\n\r\n if ( options.onRelease )\r\n {\r\n options.onRelease.bind( vecinput )( e, vecinput );\r\n }\r\n };\r\n\r\n valueBox.addEventListener( 'mousedown', innerMouseDown );\r\n\r\n LX.doAsync( this.onResize.bind( this ) );\r\n }\r\n}\r\n\r\nLX.NumberInput = NumberInput;\r\n","// TextInput.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\n\r\n/**\r\n * @class TextInput\r\n * @description TextInput Component\r\n */\r\n\r\nexport class TextInput extends BaseComponent\r\n{\r\n valid: ( s: string, m?: string ) => boolean;\r\n\r\n _triggerEvent: Event | undefined;\r\n _lastValueTriggered?: any;\r\n\r\n constructor( name: string | null, value?: string, callback?: any, options: any = {} )\r\n {\r\n super( ComponentType.TEXT, name, String( value ), options );\r\n\r\n this.onGetValue = () => {\r\n return value;\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n let skipTrigger = this._lastValueTriggered == newValue;\r\n\r\n if ( !options.ignoreValidation )\r\n {\r\n skipTrigger = skipTrigger || ( !this.valid( newValue ) );\r\n }\r\n\r\n if ( skipTrigger )\r\n {\r\n return;\r\n }\r\n\r\n this._lastValueTriggered = value = newValue;\r\n\r\n wValue.value = newValue;\r\n\r\n delete this._triggerEvent;\r\n\r\n if ( !skipCallback )\r\n {\r\n this._trigger( new IEvent( name, newValue, event ), callback );\r\n }\r\n };\r\n\r\n this.onResize = ( rect ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n container.style.width = options.inputWidth ?? `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n this.valid = ( v, matchField ) => {\r\n v = v ?? this.value();\r\n if ( !options.pattern ) return true;\r\n const errs = LX.validateValueAtPattern( v, options.pattern, matchField );\r\n return ( errs.length == 0 );\r\n };\r\n\r\n let container = document.createElement( 'div' );\r\n container.className = options.warning ? ' lexwarning' : '';\r\n container.style.display = 'flex';\r\n container.style.position = 'relative';\r\n this.root.appendChild( container );\r\n\r\n this.disabled = ( options.disabled || options.warning ) ?? ( options.url ? true : false );\r\n let wValue: any = null;\r\n\r\n if ( !this.disabled )\r\n {\r\n wValue = document.createElement( 'input' );\r\n wValue.className = 'lextext ' + ( options.inputClass ?? '' );\r\n wValue.type = options.type || '';\r\n wValue.value = value || '';\r\n wValue.style.textAlign = options.float ?? '';\r\n\r\n wValue.setAttribute( 'placeholder', options.placeholder ?? '' );\r\n\r\n if ( options.required )\r\n {\r\n wValue.setAttribute( 'required', options.required );\r\n }\r\n\r\n if ( options.pattern )\r\n {\r\n wValue.setAttribute( 'pattern', LX.buildTextPattern( options.pattern ) );\r\n }\r\n\r\n const trigger = options.trigger ?? 'default';\r\n\r\n if ( trigger == 'default' )\r\n {\r\n wValue.addEventListener( 'keyup', ( e: KeyboardEvent ) => {\r\n if ( e.key == 'Enter' )\r\n {\r\n this._triggerEvent = e;\r\n wValue.blur();\r\n }\r\n } );\r\n\r\n wValue.addEventListener( 'focusout', ( e: FocusEvent ) => {\r\n this._triggerEvent = this._triggerEvent ?? e;\r\n this.set( ( e.target as any ).value, false, this._triggerEvent );\r\n } );\r\n }\r\n else if ( trigger == 'input' )\r\n {\r\n wValue.addEventListener( 'input', ( e: InputEvent ) => {\r\n this.set( ( e.target as any ).value, false, e );\r\n } );\r\n }\r\n\r\n wValue.addEventListener( 'mousedown', function( e: MouseEvent )\r\n {\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n } );\r\n\r\n if ( options.icon )\r\n {\r\n wValue.style.paddingLeft = '1.75rem';\r\n const icon = LX.makeIcon( options.icon, { iconClass: 'absolute z-1 ml-2', svgClass: 'sm' } );\r\n container.appendChild( icon );\r\n }\r\n }\r\n else if ( options.url )\r\n {\r\n wValue = document.createElement( 'a' );\r\n wValue.href = options.url;\r\n wValue.target = '_blank';\r\n wValue.innerHTML = value ?? '';\r\n wValue.style.textAlign = options.float ?? '';\r\n wValue.className = 'lextext ellipsis-overflow';\r\n }\r\n else\r\n {\r\n wValue = document.createElement( 'input' );\r\n wValue.disabled = true;\r\n wValue.value = value;\r\n wValue.style.textAlign = options.float ?? '';\r\n wValue.className = 'lextext ellipsis-overflow ' + ( options.inputClass ?? '' );\r\n }\r\n\r\n if ( options.fit )\r\n {\r\n wValue.classList.add( 'size-content' );\r\n }\r\n\r\n Object.assign( wValue.style, options.style ?? {} );\r\n container.appendChild( wValue );\r\n\r\n LX.doAsync( this.onResize.bind( this ) );\r\n }\r\n}\r\n\r\nLX.TextInput = TextInput;\r\n","// Select.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\nimport { Button } from './Button';\r\nimport { TextInput } from './TextInput';\r\n\r\n/**\r\n * @class Select\r\n * @description Select Component\r\n */\r\n\r\nexport class Select extends BaseComponent\r\n{\r\n _lastPlacement: boolean[] = [ false, false ];\r\n\r\n constructor( name: string | null, values: any[], value: any, callback: any, options: any = {} )\r\n {\r\n super( ComponentType.SELECT, name, value, options );\r\n\r\n this.onGetValue = () => {\r\n return value;\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n value = newValue;\r\n\r\n let item: any = null;\r\n const listOptionsNodes = listOptions.childNodes;\r\n listOptionsNodes.forEach( ( e: any ) => {\r\n e.classList.remove( 'selected' );\r\n if ( e.getAttribute( 'value' ) == newValue )\r\n {\r\n item = e;\r\n }\r\n } );\r\n\r\n console.assert( item, `Item ${newValue} does not exist in the Select.` );\r\n item.classList.add( 'selected' );\r\n selectedOption.refresh( value );\r\n\r\n // Reset filter\r\n if ( filter )\r\n {\r\n filter.root.querySelector( 'input' ).value = '';\r\n const filteredOptions = this._filterOptions( values, '' );\r\n list.refresh( filteredOptions );\r\n }\r\n\r\n // Update suboptions menu\r\n const suboptions = this.root.querySelector( '.lexcustomcontainer' );\r\n const suboptionsFunc = options[`on_${value}`];\r\n suboptions.toggleAttribute( 'hidden', !suboptionsFunc );\r\n\r\n if ( suboptionsFunc )\r\n {\r\n suboptions.innerHTML = '';\r\n const suboptionsPanel = new LX.Panel();\r\n suboptionsPanel.queue( suboptions );\r\n suboptionsFunc.call( this, suboptionsPanel );\r\n suboptionsPanel.clearQueue();\r\n }\r\n\r\n this.root.dataset['opened'] = !!suboptionsFunc;\r\n list.style.height = ''; // set auto height by default\r\n\r\n if ( !skipCallback )\r\n {\r\n this._trigger( new IEvent( name, value, event ), callback );\r\n }\r\n };\r\n\r\n this.onResize = ( rect ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n container.style.width = options.inputWidth ?? `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n let container = document.createElement( 'div' );\r\n container.className = 'lexselect';\r\n this.root.appendChild( container );\r\n\r\n let wValue: any = document.createElement( 'div' );\r\n wValue.className = 'lexselect lexoption';\r\n wValue.name = name;\r\n wValue.iValue = value;\r\n\r\n if ( options.overflowContainer !== undefined )\r\n {\r\n options.overflowContainerX = options.overflowContainerY = options.overflowContainer;\r\n }\r\n\r\n const _placeOptions = ( parent: any, forceLastPlacement?: boolean ) => {\r\n const selectRoot = selectedOption.root;\r\n const rect = selectRoot.getBoundingClientRect();\r\n const nestedDialog = parent.parentElement.closest( 'dialog' )\r\n ?? parent.parentElement.closest( '.lexcolorpicker' );\r\n\r\n // Manage vertical aspect\r\n {\r\n const overflowContainer = options.overflowContainerY !== undefined\r\n ? options.overflowContainerY\r\n : LX.getParentArea( parent );\r\n const listHeight = parent.offsetHeight;\r\n let topPosition = rect.y;\r\n\r\n let maxY = window.innerHeight;\r\n\r\n if ( overflowContainer )\r\n {\r\n const parentRect = overflowContainer.getBoundingClientRect();\r\n maxY = parentRect.y + parentRect.height;\r\n }\r\n\r\n if ( nestedDialog )\r\n {\r\n const rect = nestedDialog.getBoundingClientRect();\r\n topPosition -= rect.y;\r\n maxY -= rect.y;\r\n }\r\n\r\n parent.style.top = ( topPosition + selectRoot.offsetHeight ) + 'px';\r\n list.style.height = ''; // set auto height by default\r\n\r\n const failAbove = forceLastPlacement ? this._lastPlacement[0] : ( topPosition - listHeight ) < 0;\r\n const failBelow = forceLastPlacement ? this._lastPlacement[1] : ( topPosition + listHeight ) > maxY;\r\n if ( failBelow && !failAbove )\r\n {\r\n parent.style.top = ( topPosition - listHeight ) + 'px';\r\n parent.classList.add( 'place-above' );\r\n }\r\n // If does not fit in any direction, put it below but limit height..\r\n else if ( failBelow && failAbove )\r\n {\r\n list.style.height = `${maxY - topPosition - 32}px`; // 32px margin\r\n }\r\n\r\n this._lastPlacement = [ failAbove, failBelow ];\r\n }\r\n\r\n // Manage horizontal aspect\r\n {\r\n const overflowContainer = options.overflowContainerX !== undefined\r\n ? options.overflowContainerX\r\n : LX.getParentArea( parent );\r\n const listWidth = parent.offsetWidth;\r\n let leftPosition = rect.x;\r\n\r\n parent.style.minWidth = ( rect.width ) + 'px';\r\n\r\n if ( nestedDialog )\r\n {\r\n const rect = nestedDialog.getBoundingClientRect();\r\n leftPosition -= rect.x;\r\n }\r\n\r\n parent.style.left = leftPosition + 'px';\r\n\r\n let maxX = window.innerWidth;\r\n\r\n if ( overflowContainer )\r\n {\r\n const parentRect = overflowContainer.getBoundingClientRect();\r\n maxX = parentRect.x + parentRect.width;\r\n }\r\n\r\n const showLeft = ( leftPosition + listWidth ) > maxX;\r\n if ( showLeft )\r\n {\r\n parent.style.left = ( leftPosition - ( listWidth - rect.width ) ) + 'px';\r\n }\r\n }\r\n };\r\n\r\n let selectedOption = new Button( null, value, ( value: any, event: any ) => {\r\n if ( list.unfocus_event )\r\n {\r\n delete list.unfocus_event;\r\n return;\r\n }\r\n\r\n listDialog.classList.remove( 'place-above' );\r\n const opened = listDialog.hasAttribute( 'open' );\r\n\r\n if ( !opened )\r\n {\r\n listDialog.show();\r\n _placeOptions( listDialog );\r\n }\r\n else\r\n {\r\n listDialog.close();\r\n }\r\n\r\n if ( filter )\r\n {\r\n filter.root.querySelector( 'input' ).focus();\r\n }\r\n }, { buttonClass: 'array', skipInlineCount: true, disabled: options.disabled } );\r\n\r\n selectedOption.root.style.width = '100%';\r\n selectedOption.root.querySelector( 'span' ).appendChild( LX.makeIcon( 'Down', { svgClass: 'sm' } ) );\r\n\r\n container.appendChild( selectedOption.root );\r\n\r\n selectedOption.refresh = ( v?: string ) => {\r\n const buttonSpan = selectedOption.root.querySelector( 'span' );\r\n if ( buttonSpan.innerText == '' )\r\n {\r\n buttonSpan.innerText = v;\r\n }\r\n else\r\n {\r\n buttonSpan.innerHTML = buttonSpan.innerHTML.replaceAll( buttonSpan.innerText, v );\r\n }\r\n };\r\n\r\n // Add select options container\r\n\r\n const listDialog = document.createElement( 'dialog' );\r\n listDialog.className = 'lexselectoptions';\r\n\r\n let list: any = document.createElement( 'ul' );\r\n list.tabIndex = -1;\r\n list.className = 'lexoptions';\r\n listDialog.appendChild( list );\r\n\r\n list.addEventListener( 'focusout', function( e: any )\r\n {\r\n e.stopPropagation();\r\n e.stopImmediatePropagation();\r\n if ( e.relatedTarget === selectedOption.root.querySelector( 'button' ) )\r\n {\r\n list.unfocus_event = true;\r\n setTimeout( () => delete list.unfocus_event, 200 );\r\n }\r\n else if ( e.relatedTarget && listDialog.contains( e.relatedTarget ) )\r\n {\r\n return;\r\n }\r\n else if ( e.target.className == 'lexinput-filter' )\r\n {\r\n return;\r\n }\r\n listDialog.close();\r\n } );\r\n\r\n // Add filter options\r\n let filter: any = null;\r\n if ( options.filter ?? false )\r\n {\r\n const filterOptions = LX.deepCopy( options );\r\n filterOptions.placeholder = filterOptions.placeholder ?? 'Search...';\r\n filterOptions.skipComponent = filterOptions.skipComponent ?? true;\r\n filterOptions.trigger = 'input';\r\n filterOptions.icon = 'Search';\r\n filterOptions.className = 'lexfilter';\r\n filterOptions.inputClass = 'outline';\r\n\r\n filter = new TextInput( null, options.filterValue ?? '', ( v: string ) => {\r\n const filteredOptions = this._filterOptions( values, v );\r\n list.refresh( filteredOptions );\r\n _placeOptions( listDialog, true );\r\n }, filterOptions );\r\n filter.root.querySelector( '.lextext' ).style.border = '1px solid transparent';\r\n\r\n const input = filter.root.querySelector( 'input' );\r\n\r\n input.addEventListener( 'focusout', function( e: any )\r\n {\r\n if ( e.relatedTarget && e.relatedTarget.tagName == 'UL'\r\n && e.relatedTarget.classList.contains( 'lexoptions' ) )\r\n {\r\n return;\r\n }\r\n listDialog.close();\r\n } );\r\n\r\n list.appendChild( filter.root );\r\n }\r\n\r\n // Create option list to empty it easily..\r\n const listOptions = document.createElement( 'span' );\r\n listOptions.className = 'lexselectinnerlist';\r\n list.appendChild( listOptions );\r\n\r\n // Add select options list\r\n list.refresh = ( currentOptions: any ) => {\r\n // Empty list\r\n listOptions.innerHTML = '';\r\n\r\n if ( !currentOptions.length )\r\n {\r\n let iValue = options.emptyMsg ?? 'No options found.';\r\n\r\n let option = document.createElement( 'div' );\r\n option.className = 'option';\r\n option.innerHTML = LX.makeIcon( 'Inbox', { svgClass: 'mr-2' } ).innerHTML + iValue;\r\n\r\n let li = document.createElement( 'li' );\r\n li.className = 'lexselectitem empty';\r\n li.appendChild( option );\r\n\r\n listOptions.appendChild( li );\r\n return;\r\n }\r\n\r\n for ( let i = 0; i < currentOptions.length; i++ )\r\n {\r\n let iValue = currentOptions[i];\r\n let li = document.createElement( 'li' );\r\n let option: any = document.createElement( 'div' );\r\n option.className = 'option';\r\n li.appendChild( option );\r\n\r\n const onSelect = ( e: any ) => {\r\n this.set( e.currentTarget?.getAttribute( 'value' ), false, e );\r\n listDialog.close();\r\n };\r\n\r\n li.addEventListener( 'click', onSelect );\r\n\r\n // Add string option\r\n if ( iValue.constructor != Object )\r\n {\r\n const asLabel = iValue[0] === '@';\r\n\r\n if ( !asLabel )\r\n {\r\n option.innerHTML = `<span>${iValue}</span>`;\r\n option.appendChild( LX.makeIcon( 'Check' ) );\r\n option.value = iValue;\r\n li.setAttribute( 'value', iValue );\r\n\r\n if ( iValue == value )\r\n {\r\n li.classList.add( 'selected' );\r\n wValue.innerHTML = iValue;\r\n }\r\n }\r\n else\r\n {\r\n option.innerHTML = '<span>' + iValue.substr( 1 ) + '</span>';\r\n li.removeEventListener( 'click', onSelect );\r\n }\r\n\r\n li.classList.add( asLabel ? 'lexselectlabel' : 'lexselectitem' );\r\n }\r\n else\r\n {\r\n // Add image option\r\n let img = document.createElement( 'img' );\r\n img.src = iValue.src;\r\n li.setAttribute( 'value', iValue.value );\r\n li.className = 'lexlistitem';\r\n option.innerText = iValue.value;\r\n option.className += ' media';\r\n option.prepend( img );\r\n\r\n option.setAttribute( 'value', iValue.value );\r\n option.setAttribute( 'data-index', i );\r\n option.setAttribute( 'data-src', iValue.src );\r\n option.setAttribute( 'title', iValue.value );\r\n\r\n if ( value == iValue.value )\r\n {\r\n li.classList.add( 'selected' );\r\n }\r\n }\r\n\r\n listOptions.appendChild( li );\r\n }\r\n };\r\n\r\n list.refresh( values );\r\n\r\n container.appendChild( listDialog );\r\n\r\n // Element suboptions\r\n let suboptions = document.createElement( 'div' );\r\n suboptions.className = 'lexcustomcontainer w-full';\r\n\r\n const suboptionsFunc = options[`on_${value}`];\r\n suboptions.toggleAttribute( 'hidden', !suboptionsFunc );\r\n\r\n if ( suboptionsFunc )\r\n {\r\n suboptions.innerHTML = '';\r\n const suboptionsPanel = new LX.Panel();\r\n suboptionsPanel.queue( suboptions );\r\n suboptionsFunc.call( this, suboptionsPanel );\r\n suboptionsPanel.clearQueue();\r\n }\r\n\r\n this.root.appendChild( suboptions );\r\n this.root.dataset['opened'] = !!suboptionsFunc;\r\n\r\n LX.doAsync( this.onResize.bind( this ) );\r\n }\r\n\r\n _filterOptions( options: any, value: string )\r\n {\r\n // Push to right container\r\n const emptyFilter = !value.length;\r\n let filteredOptions = [];\r\n\r\n // Add components\r\n for ( let i = 0; i < options.length; i++ )\r\n {\r\n let o = options[i];\r\n if ( !emptyFilter )\r\n {\r\n let toCompare = ( typeof o == 'string' ) ? o : o.value;\r\n const filterWord = value.toLowerCase();\r\n const name = toCompare.toLowerCase();\r\n if ( !name.includes( filterWord ) ) continue;\r\n }\r\n\r\n filteredOptions.push( o );\r\n }\r\n\r\n return filteredOptions;\r\n }\r\n}\r\n\r\nLX.Select = Select;\r\n","// ArrayInput.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\nimport { Button } from './Button';\r\nimport { NumberInput } from './NumberInput';\r\nimport { Select } from './Select';\r\nimport { TextInput } from './TextInput';\r\n\r\n/**\r\n * @class ArrayInput\r\n * @description ArrayInput Component\r\n */\r\n\r\nexport class ArrayInput extends BaseComponent\r\n{\r\n _updateItems: () => void;\r\n\r\n constructor( name: string, values: any[] = [], callback: any, options: any = {} )\r\n {\r\n options.nameWidth = '100%';\r\n\r\n super( ComponentType.ARRAY, name, null, options );\r\n\r\n this.onGetValue = () => {\r\n return values;\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n values = newValue;\r\n this._updateItems();\r\n if ( !skipCallback )\r\n {\r\n this._trigger( new IEvent( name, values, event ), callback );\r\n }\r\n };\r\n\r\n // Add open array button\r\n\r\n let container = document.createElement( 'div' );\r\n container.className = 'lexarray';\r\n container.style.width = '100%';\r\n this.root.appendChild( container );\r\n this.root.dataset['opened'] = false;\r\n\r\n let buttonName = `Array (size ${values.length})`;\r\n\r\n const toggleButton = new Button( null, buttonName, () => {\r\n this.root.dataset['opened'] = this.root.dataset['opened'] == 'true' ? false : true;\r\n this.root.querySelector( '.lexarrayitems' ).toggleAttribute( 'hidden' );\r\n }, { buttonClass: 'array' } );\r\n toggleButton.root.querySelector( 'span' ).appendChild( LX.makeIcon( 'Down', { svgClass: 'sm' } ) );\r\n container.appendChild( toggleButton.root );\r\n\r\n // Show elements\r\n\r\n let arrayItems = document.createElement( 'div' );\r\n arrayItems.className = 'lexarrayitems';\r\n arrayItems.toggleAttribute( 'hidden', true );\r\n this.root.appendChild( arrayItems );\r\n\r\n this._updateItems = () => {\r\n // Update num items\r\n let buttonSpan = this.root.querySelector( '.lexbutton.array span' );\r\n for ( let node of buttonSpan.childNodes )\r\n {\r\n if ( node.nodeType === Node.TEXT_NODE )\r\n {\r\n node.textContent = `Array (size ${values.length})`;\r\n break;\r\n }\r\n }\r\n\r\n // Update inputs\r\n arrayItems.innerHTML = '';\r\n\r\n for ( let i = 0; i < values.length; ++i )\r\n {\r\n const value = values[i];\r\n let baseclass = options.innerValues ? 'select' : value.constructor;\r\n let component: any = null;\r\n\r\n switch ( baseclass )\r\n {\r\n case String:\r\n component = new TextInput( i + '', value, function( value: string )\r\n {\r\n values[i] = value;\r\n callback( values );\r\n }, { nameWidth: '12px', className: 'p-0', skipReset: true } );\r\n break;\r\n case Number:\r\n component = new NumberInput( i + '', value, function( value: number )\r\n {\r\n values[i] = value;\r\n callback( values );\r\n }, { nameWidth: '12px', className: 'p-0', skipReset: true } );\r\n break;\r\n case 'select':\r\n component = new Select( i + '', options.innerValues, value, function( value: any )\r\n {\r\n values[i] = value;\r\n callback( values );\r\n }, { nameWidth: '12px', className: 'p-0', skipReset: true } );\r\n break;\r\n }\r\n\r\n console.assert( component, `Value of type ${baseclass} cannot be modified in ArrayInput` );\r\n\r\n arrayItems.appendChild( component.root );\r\n\r\n const removeComponent = new Button( null, '', ( v: any, event: MouseEvent ) => {\r\n values.splice( values.indexOf( value ), 1 );\r\n this._updateItems();\r\n this._trigger( new IEvent( name, values, event ), callback );\r\n }, { title: 'Remove item', icon: 'Trash3' } );\r\n\r\n component.root.appendChild( removeComponent.root );\r\n }\r\n\r\n const addButton = new Button( null, LX.makeIcon( 'Plus', { svgClass: 'sm' } ).innerHTML + 'Add item',\r\n ( v: any, event: MouseEvent ) => {\r\n values.push( options.innerValues ? options.innerValues[0] : '' );\r\n this._updateItems();\r\n this._trigger( new IEvent( name, values, event ), callback );\r\n }, { buttonClass: 'array' } );\r\n\r\n arrayItems.appendChild( addButton.root );\r\n };\r\n\r\n this._updateItems();\r\n }\r\n}\r\n\r\nLX.ArrayInput = ArrayInput;\r\n","// Card.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\nimport { Button } from './Button';\r\n\r\n/**\r\n * @class Card\r\n * @description Card Component\r\n */\r\n\r\nexport class Card extends BaseComponent\r\n{\r\n constructor( name: string, options: any = {} )\r\n {\r\n options.hideName = true;\r\n\r\n super( ComponentType.CARD, name, null, options );\r\n\r\n this.root.classList.add( 'place-content-center' );\r\n\r\n const container = LX.makeContainer( [ '100%', 'auto' ],\r\n 'lexcard max-w-sm flex flex-col gap-4 bg-primary border rounded-xl py-6', '', this.root );\r\n\r\n if ( options.header )\r\n {\r\n const hasAction = options.header.action !== undefined;\r\n let header = LX.makeContainer( [ '100%', 'auto' ],\r\n `flex ${hasAction ? 'flex-row gap-4' : 'flex-col gap-1'} px-6`, '', container );\r\n\r\n if ( hasAction )\r\n {\r\n const actionBtn = new Button( null, options.header.action.name, options.header.action.callback );\r\n header.appendChild( actionBtn.root );\r\n\r\n const titleDescBox = LX.makeContainer( [ '75%', 'auto' ], `flex flex-col gap-1`, '' );\r\n header.prepend( titleDescBox );\r\n header = titleDescBox;\r\n }\r\n\r\n if ( options.header.title )\r\n {\r\n LX.makeElement( 'div', 'text-md leading-none font-semibold', options.header.title, header );\r\n }\r\n\r\n if ( options.header.description )\r\n {\r\n LX.makeElement( 'div', 'text-sm fg-tertiary', options.header.description, header );\r\n }\r\n }\r\n\r\n if ( options.content )\r\n {\r\n const content = LX.makeContainer( [ '100%', 'auto' ], 'flex flex-col gap-2 px-6', '', container );\r\n const elements = [].concat( options.content );\r\n for ( let e of ( elements as any[] ) )\r\n {\r\n content.appendChild( e.root ? e.root : e );\r\n }\r\n }\r\n\r\n if ( options.footer )\r\n {\r\n const footer = LX.makeContainer( [ '100%', 'auto' ], 'flex flex-col gap-1 px-6', '', container );\r\n const elements = [].concat( options.footer );\r\n\r\n for ( let e of ( elements as any[] ) )\r\n {\r\n footer.appendChild( e.root ? e.root : e );\r\n }\r\n }\r\n\r\n if ( options.callback )\r\n {\r\n container.classList.add( 'selectable' );\r\n container.style.cursor = 'pointer';\r\n container.addEventListener( 'click', ( e: MouseEvent ) => {\r\n this._trigger( new IEvent( name, null, e ), options.callback );\r\n } );\r\n }\r\n }\r\n}\r\n\r\nLX.Card = Card;\r\n","// Checkbox.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\n\r\n/**\r\n * @class Checkbox\r\n * @description Checkbox Component\r\n */\r\n\r\nexport class Checkbox extends BaseComponent\r\n{\r\n constructor( name: string | null, value: boolean, callback: any, options: any = {} )\r\n {\r\n if ( !name && !options.label )\r\n {\r\n throw ( 'Set Component Name or at least a label!' );\r\n }\r\n\r\n super( ComponentType.CHECKBOX, name, value, options );\r\n\r\n this.onGetValue = () => {\r\n return value;\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n if ( newValue == value )\r\n {\r\n return;\r\n }\r\n\r\n checkbox.checked = value = newValue;\r\n\r\n // Update suboptions menu\r\n this.root.querySelector( '.lexcheckboxsubmenu' )?.toggleAttribute( 'hidden', !newValue );\r\n\r\n if ( !skipCallback )\r\n {\r\n this._trigger( new IEvent( name, newValue, event ), callback );\r\n }\r\n };\r\n\r\n this.onResize = ( rect ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n container.style.width = options.inputWidth ?? `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n var container = document.createElement( 'div' );\r\n container.className = 'lexcheckboxcont';\r\n this.root.appendChild( container );\r\n\r\n let checkbox = document.createElement( 'input' );\r\n checkbox.type = 'checkbox';\r\n checkbox.className = 'lexcheckbox ' + ( options.className ?? 'primary' );\r\n checkbox.checked = value;\r\n checkbox.disabled = options.disabled ?? false;\r\n container.appendChild( checkbox );\r\n\r\n let valueName = document.createElement( 'span' );\r\n valueName.className = 'checkboxtext';\r\n valueName.innerHTML = options.label ?? 'On';\r\n container.appendChild( valueName );\r\n\r\n checkbox.addEventListener( 'change', ( e ) => {\r\n this.set( checkbox.checked, false, e );\r\n } );\r\n\r\n if ( options.suboptions )\r\n {\r\n let suboptions = document.createElement( 'div' );\r\n suboptions.className = 'lexcheckboxsubmenu';\r\n suboptions.toggleAttribute( 'hidden', !checkbox.checked );\r\n\r\n const suboptionsPanel = new LX.Panel();\r\n suboptionsPanel.queue( suboptions );\r\n options.suboptions.call( this, suboptionsPanel );\r\n suboptionsPanel.clearQueue();\r\n\r\n this.root.appendChild( suboptions );\r\n }\r\n\r\n LX.doAsync( this.onResize.bind( this ) );\r\n }\r\n}\r\n\r\nLX.Checkbox = Checkbox;\r\n","// Color.js @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\n\r\nexport class Color\r\n{\r\n private _rgb: any;\r\n private _hex: string = '#000000';\r\n private _hsv: any;\r\n css: any;\r\n\r\n get rgb(): any\r\n {\r\n return this._rgb;\r\n }\r\n set rgb( v: any )\r\n {\r\n this._fromRGB( v );\r\n }\r\n\r\n get hex(): string\r\n {\r\n return this._hex;\r\n }\r\n set hex( v: string )\r\n {\r\n this._fromHex( v );\r\n }\r\n\r\n get hsv(): any\r\n {\r\n return this._hsv;\r\n }\r\n set hsv( v: any )\r\n {\r\n this._fromHSV( v );\r\n }\r\n\r\n constructor( value: any )\r\n {\r\n this.set( value );\r\n }\r\n\r\n set( value: any )\r\n {\r\n if ( typeof value === 'string' && value.startsWith( '#' ) )\r\n {\r\n this._fromHex( value );\r\n }\r\n else if ( 'r' in value && 'g' in value && 'b' in value )\r\n {\r\n value.a = value.a ?? 1.0;\r\n this._fromRGB( value );\r\n }\r\n else if ( 'h' in value && 's' in value && 'v' in value )\r\n {\r\n value.a = value.a ?? 1.0;\r\n this._fromHSV( value );\r\n }\r\n else\r\n {\r\n throw ( 'Bad color model!' );\r\n }\r\n }\r\n\r\n setHSV( hsv: any )\r\n {\r\n this._fromHSV( hsv );\r\n }\r\n setRGB( rgb: any )\r\n {\r\n this._fromRGB( rgb );\r\n }\r\n setHex( hex: string )\r\n {\r\n this._fromHex( hex );\r\n }\r\n\r\n _fromHex( hex: string )\r\n {\r\n this._fromRGB( LX.hexToRgb( hex ) );\r\n }\r\n\r\n _fromRGB( rgb: any )\r\n {\r\n this._rgb = rgb;\r\n this._hsv = LX.rgbToHsv( rgb );\r\n this._hex = LX.rgbToHex( rgb );\r\n this.css = LX.rgbToCss( this._rgb );\r\n }\r\n\r\n _fromHSV( hsv: any )\r\n {\r\n this._hsv = hsv;\r\n this._rgb = LX.hsvToRgb( hsv );\r\n this._hex = LX.rgbToHex( this._rgb );\r\n this.css = LX.rgbToCss( this._rgb );\r\n }\r\n}\r\n\r\nLX.Color = Color;\r\n","// ColorPicker.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\nimport { Button } from './Button';\r\nimport { Color } from './Color';\r\nimport { Select } from './Select';\r\nimport { TextInput } from './TextInput';\r\n\r\n/**\r\n * @class ColorPicker\r\n */\r\n\r\nexport class ColorPicker\r\n{\r\n static currentPicker = false;\r\n\r\n root: any;\r\n\r\n colorModel: string;\r\n useAlpha: boolean;\r\n callback: any;\r\n\r\n markerHalfSize: number;\r\n markerSize: number;\r\n currentColor: Color;\r\n labelComponent: TextInput;\r\n\r\n colorPickerBackground: any;\r\n intSatMarker: any;\r\n colorPickerTracker: any;\r\n alphaTracker: any;\r\n hueMarker: any;\r\n alphaMarker: any;\r\n\r\n onPopover: any;\r\n\r\n constructor( hexValue: string, options: any = {} )\r\n {\r\n this.colorModel = options.colorModel ?? 'Hex';\r\n this.useAlpha = options.useAlpha ?? false;\r\n this.callback = options.onChange;\r\n\r\n if ( !this.callback )\r\n {\r\n console.warn( 'Define a callback in _options.onChange_ to allow getting new Color values!' );\r\n }\r\n\r\n this.root = document.createElement( 'div' );\r\n this.root.className = 'lexcolorpicker';\r\n\r\n this.markerHalfSize = 8;\r\n this.markerSize = this.markerHalfSize * 2;\r\n this.currentColor = new Color( hexValue );\r\n\r\n const hueColor = new Color( { h: this.currentColor.hsv.h, s: 1, v: 1 } );\r\n\r\n // Intensity, Sat\r\n this.colorPickerBackground = document.createElement( 'div' );\r\n this.colorPickerBackground.className = 'lexcolorpickerbg';\r\n this.colorPickerBackground.style.backgroundColor =\r\n `rgb(${hueColor.css.r}, ${hueColor.css.g}, ${hueColor.css.b})`;\r\n this.root.appendChild( this.colorPickerBackground );\r\n\r\n this.intSatMarker = document.createElement( 'div' );\r\n this.intSatMarker.className = 'lexcolormarker';\r\n this.intSatMarker.style.backgroundColor = this.currentColor.hex;\r\n this.colorPickerBackground.appendChild( this.intSatMarker );\r\n\r\n let pickerRect: any = null;\r\n\r\n let innerMouseDown = ( e: MouseEvent ) => {\r\n var doc = this.root.ownerDocument;\r\n doc.addEventListener( 'mousemove', innerMouseMove );\r\n doc.addEventListener( 'mouseup', innerMouseUp );\r\n document.body.classList.add( 'noevents' );\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n\r\n const currentLeft = e.offsetX - this.markerHalfSize;\r\n this.intSatMarker.style.left = currentLeft + 'px';\r\n const currentTop = e.offsetY - this.markerHalfSize;\r\n this.intSatMarker.style.top = currentTop + 'px';\r\n this._positionToSv( currentLeft, currentTop );\r\n this._updateColorValue();\r\n\r\n pickerRect = this.colorPickerBackground.getBoundingClientRect();\r\n };\r\n\r\n let innerMouseMove = ( e: MouseEvent ) => {\r\n const dX = e.movementX;\r\n const dY = e.movementY;\r\n const mouseX = e.x - pickerRect.x;\r\n const mouseY = e.y - pickerRect.y;\r\n\r\n if ( dX != 0 && ( mouseX >= 0 || dX < 0 ) && ( mouseX < this.colorPickerBackground.offsetWidth || dX > 0 ) )\r\n {\r\n this.intSatMarker.style.left =\r\n LX.clamp( parseInt( this.intSatMarker.style.left ) + dX, -this.markerHalfSize,\r\n this.colorPickerBackground.offsetWidth - this.markerHalfSize ) + 'px';\r\n }\r\n\r\n if ( dY != 0 && ( mouseY >= 0 || dY < 0 )\r\n && ( mouseY < this.colorPickerBackground.offsetHeight || dY > 0 ) )\r\n {\r\n this.intSatMarker.style.top =\r\n LX.clamp( parseInt( this.intSatMarker.style.top ) + dY, -this.markerHalfSize,\r\n this.colorPickerBackground.offsetHeight - this.markerHalfSize ) + 'px';\r\n }\r\n\r\n this._positionToSv( parseInt( this.intSatMarker.style.left ), parseInt( this.intSatMarker.style.top ) );\r\n this._updateColorValue();\r\n\r\n e.stopPropagation();\r\n e.preventDefault();\r\n };\r\n\r\n let innerMouseUp = ( e: MouseEvent ) => {\r\n var doc = this.root.ownerDocument;\r\n doc.removeEventListener( 'mousemove', innerMouseMove );\r\n doc.removeEventListener( 'mouseup', innerMouseUp );\r\n document.body.classList.remove( 'noevents' );\r\n };\r\n\r\n this.colorPickerBackground.addEventListener( 'mousedown', innerMouseDown );\r\n\r\n const hueAlphaContainer = LX.makeContainer( [ '100%', 'auto' ], 'flex flex-row gap-1 items-center', '',\r\n this.root );\r\n\r\n const EyeDropper = ( window as any ).EyeDropper;\r\n if ( EyeDropper )\r\n {\r\n hueAlphaContainer.appendChild( new Button( null, 'eyedrop', async () => {\r\n const eyeDropper = new EyeDropper();\r\n try\r\n {\r\n const result = await eyeDropper.open();\r\n this.fromHexColor( result.sRGBHex );\r\n }\r\n catch ( err )\r\n {\r\n // console.error(\"EyeDropper cancelled or failed: \", err)\r\n }\r\n }, { icon: 'Pipette', buttonClass: 'bg-none', title: 'Sample Color' } ).root );\r\n }\r\n\r\n const innerHueAlpha = LX.makeContainer( [ '100%', '100%' ], 'flex flex-col gap-2', '', hueAlphaContainer );\r\n\r\n // Hue\r\n this.colorPickerTracker = document.createElement( 'div' );\r\n this.colorPickerTracker.className = 'lexhuetracker';\r\n innerHueAlpha.appendChild( this.colorPickerTracker );\r\n\r\n this.hueMarker = document.createElement( 'div' );\r\n this.hueMarker.className = 'lexcolormarker';\r\n this.hueMarker.style.backgroundColor = `rgb(${hueColor.css.r}, ${hueColor.css.g}, ${hueColor.css.b})`;\r\n this.colorPickerTracker.appendChild( this.hueMarker );\r\n\r\n const _fromHueX = ( hueX: number ) => {\r\n this.hueMarker.style.left = hueX + 'px';\r\n this.currentColor.hsv.h = LX.remapRange( hueX, 0, this.colorPickerTracker.offsetWidth - this.markerSize, 0,\r\n 360 );\r\n\r\n const hueColor = new Color( { h: this.currentColor.hsv.h, s: 1, v: 1 } );\r\n this.hueMarker.style.backgroundColor = `rgb(${hueColor.css.r}, ${hueColor.css.g}, ${hueColor.css.b})`;\r\n this.colorPickerBackground.style.backgroundColor =\r\n `rgb(${hueColor.css.r}, ${hueColor.css.g}, ${hueColor.css.b})`;\r\n this._updateColorValue();\r\n };\r\n\r\n let hueTrackerRect: any = null;\r\n\r\n let innerMouseDownHue = ( e: MouseEvent ) => {\r\n const doc = this.root.ownerDocument;\r\n doc.addEventListener( 'mousemove', innerMouseMoveHue );\r\n doc.addEventListener( 'mouseup', innerMouseUpHue );\r\n document.body.classList.add( 'noevents' );\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n\r\n const hueX = LX.clamp( e.offsetX - this.markerHalfSize, 0,\r\n this.colorPickerTracker.offsetWidth - this.markerSize );\r\n _fromHueX( hueX );\r\n\r\n hueTrackerRect = this.colorPickerTracker.getBoundingClientRect();\r\n };\r\n\r\n let innerMouseMoveHue = ( e: MouseEvent ) => {\r\n const dX = e.movementX;\r\n const mouseX = e.x - hueTrackerRect.x;\r\n\r\n if ( dX != 0 && ( mouseX >= this.markerHalfSize || dX < 0 )\r\n && ( mouseX < ( this.colorPickerTracker.offsetWidth - this.markerHalfSize ) || dX > 0 ) )\r\n {\r\n const hueX = LX.clamp( parseInt( this.hueMarker.style.left ) + dX, 0,\r\n this.colorPickerTracker.offsetWidth - this.markerSize );\r\n _fromHueX( hueX );\r\n }\r\n\r\n e.stopPropagation();\r\n e.preventDefault();\r\n };\r\n\r\n let innerMouseUpHue = ( e: MouseEvent ) => {\r\n var doc = this.root.ownerDocument;\r\n doc.removeEventListener( 'mousemove', innerMouseMoveHue );\r\n doc.removeEventListener( 'mouseup', innerMouseUpHue );\r\n document.body.classList.remove( 'noevents' );\r\n };\r\n\r\n this.colorPickerTracker.addEventListener( 'mousedown', innerMouseDownHue );\r\n\r\n // Alpha\r\n if ( this.useAlpha )\r\n {\r\n this.alphaTracker = document.createElement( 'div' );\r\n this.alphaTracker.className = 'lexalphatracker';\r\n this.alphaTracker.style.color =\r\n `rgb(${this.currentColor.css.r}, ${this.currentColor.css.g}, ${this.currentColor.css.b})`;\r\n innerHueAlpha.appendChild( this.alphaTracker );\r\n\r\n this.alphaMarker = document.createElement( 'div' );\r\n this.alphaMarker.className = 'lexcolormarker';\r\n this.alphaMarker.style.backgroundColor =\r\n `rgb(${this.currentColor.css.r}, ${this.currentColor.css.g}, ${this.currentColor.css.b},${this.currentColor.css.a})`;\r\n this.alphaTracker.appendChild( this.alphaMarker );\r\n\r\n const _fromAlphaX = ( alphaX: number ) => {\r\n this.alphaMarker.style.left = alphaX + 'px';\r\n this.currentColor.hsv.a = LX.remapRange( alphaX, 0, this.alphaTracker.offsetWidth - this.markerSize, 0,\r\n 1 );\r\n this._updateColorValue();\r\n // Update alpha marker once the color is updated\r\n this.alphaMarker.style.backgroundColor =\r\n `rgb(${this.currentColor.css.r}, ${this.currentColor.css.g}, ${this.currentColor.css.b},${this.currentColor.css.a})`;\r\n };\r\n\r\n let alphaTrackerRect: any = null;\r\n\r\n let innerMouseDownAlpha = ( e: MouseEvent ) => {\r\n const doc = this.root.ownerDocument;\r\n doc.addEventListener( 'mousemove', innerMouseMoveAlpha );\r\n doc.addEventListener( 'mouseup', innerMouseUpAlpha );\r\n document.body.classList.add( 'noevents' );\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n const alphaX = LX.clamp( e.offsetX - this.markerHalfSize, 0,\r\n this.alphaTracker.offsetWidth - this.markerSize );\r\n _fromAlphaX( alphaX );\r\n alphaTrackerRect = this.alphaTracker.getBoundingClientRect();\r\n };\r\n\r\n let innerMouseMoveAlpha = ( e: MouseEvent ) => {\r\n const dX = e.movementX;\r\n const mouseX = e.x - alphaTrackerRect.x;\r\n\r\n if ( dX != 0 && ( mouseX >= this.markerHalfSize || dX < 0 )\r\n && ( mouseX < ( this.alphaTracker.offsetWidth - this.markerHalfSize ) || dX > 0 ) )\r\n {\r\n const alphaX = LX.clamp( parseInt( this.alphaMarker.style.left ) + dX, 0,\r\n this.alphaTracker.offsetWidth - this.markerSize );\r\n _fromAlphaX( alphaX );\r\n }\r\n\r\n e.stopPropagation();\r\n e.preventDefault();\r\n };\r\n\r\n let innerMouseUpAlpha = ( e: MouseEvent ) => {\r\n var doc = this.root.ownerDocument;\r\n doc.removeEventListener( 'mousemove', innerMouseMoveAlpha );\r\n doc.removeEventListener( 'mouseup', innerMouseUpAlpha );\r\n document.body.classList.remove( 'noevents' );\r\n };\r\n\r\n this.alphaTracker.addEventListener( 'mousedown', innerMouseDownAlpha );\r\n }\r\n\r\n // Info display\r\n const colorLabel = LX.makeContainer( [ '100%', 'auto' ], 'flex flex-row gap-1', '', this.root );\r\n\r\n colorLabel.appendChild( new Select( null, [ 'CSS', 'Hex', 'HSV', 'RGB' ], this.colorModel, ( v: any ) => {\r\n this.colorModel = v;\r\n this._updateColorValue( null, true );\r\n } ).root );\r\n\r\n this.labelComponent = new TextInput( null, '', null, { inputClass: 'bg-none', fit: true, disabled: true } );\r\n colorLabel.appendChild( this.labelComponent.root );\r\n\r\n // Copy button\r\n {\r\n const copyButtonComponent = new Button( null, 'copy', async () => {\r\n navigator.clipboard.writeText( this.labelComponent.value() );\r\n copyButtonComponent.root.querySelector( \"input[type='checkbox']\" ).style.pointerEvents = 'none';\r\n\r\n LX.doAsync( () => {\r\n if ( copyButtonComponent.swap ) copyButtonComponent.swap( true );\r\n copyButtonComponent.root.querySelector( \"input[type='checkbox']\" ).style.pointerEvents = 'auto';\r\n }, 3000 );\r\n }, { swap: 'Check', icon: 'Copy', buttonClass: 'bg-none', className: 'ml-auto', title: 'Copy' } );\r\n\r\n copyButtonComponent.root.querySelector( '.swap-on svg' ).classList.add( 'fg-success' );\r\n\r\n colorLabel.appendChild( copyButtonComponent.root );\r\n }\r\n\r\n this._updateColorValue( hexValue, true );\r\n\r\n LX.doAsync( this._placeMarkers.bind( this ) );\r\n\r\n this.onPopover = this._placeMarkers.bind( this );\r\n }\r\n\r\n _placeMarkers()\r\n {\r\n this._svToPosition( this.currentColor.hsv.s, this.currentColor.hsv.v );\r\n\r\n const hueLeft = LX.remapRange( this.currentColor.hsv.h, 0, 360, 0,\r\n this.colorPickerTracker.offsetWidth - this.markerSize );\r\n this.hueMarker.style.left = hueLeft + 'px';\r\n\r\n if ( this.useAlpha )\r\n {\r\n const alphaLeft = LX.remapRange( this.currentColor.hsv.a, 0, 1, 0,\r\n this.alphaTracker.offsetWidth - this.markerSize );\r\n this.alphaMarker.style.left = alphaLeft + 'px';\r\n }\r\n }\r\n\r\n _svToPosition( s: number, v: number )\r\n {\r\n this.intSatMarker.style.left = `${\r\n LX.remapRange( s, 0, 1, -this.markerHalfSize, this.colorPickerBackground.offsetWidth - this.markerHalfSize )\r\n }px`;\r\n this.intSatMarker.style.top = `${\r\n LX.remapRange( 1 - v, 0, 1, -this.markerHalfSize,\r\n this.colorPickerBackground.offsetHeight - this.markerHalfSize )\r\n }px`;\r\n }\r\n\r\n _positionToSv( left: number, top: number )\r\n {\r\n this.currentColor.hsv.s = LX.remapRange( left, -this.markerHalfSize,\r\n this.colorPickerBackground.offsetWidth - this.markerHalfSize, 0, 1 );\r\n this.currentColor.hsv.v = 1\r\n - LX.remapRange( top, -this.markerHalfSize, this.colorPickerBackground.offsetHeight - this.markerHalfSize,\r\n 0, 1 );\r\n }\r\n\r\n _updateColorValue( newHexValue?: string | null, skipCallback: boolean = false )\r\n {\r\n this.currentColor.set( newHexValue ?? this.currentColor.hsv );\r\n\r\n if ( this.callback && !skipCallback )\r\n {\r\n this.callback( this.currentColor );\r\n }\r\n\r\n this.intSatMarker.style.backgroundColor = this.currentColor.hex;\r\n\r\n if ( this.useAlpha )\r\n {\r\n this.alphaTracker.style.color =\r\n `rgb(${this.currentColor.css.r}, ${this.currentColor.css.g}, ${this.currentColor.css.b})`;\r\n }\r\n\r\n const toFixed = ( s: number, n: number = 2 ) => {\r\n return s.toFixed( n ).replace( /([0-9]+(\\.[0-9]+[1-9])?)(\\.?0+$)/, '$1' );\r\n };\r\n\r\n if ( this.colorModel == 'CSS' )\r\n {\r\n const { r, g, b, a } = this.currentColor.css;\r\n this.labelComponent.set(\r\n `rgb${this.useAlpha ? 'a' : ''}(${r},${g},${b}${this.useAlpha ? ',' + toFixed( a ) : ''})`\r\n );\r\n }\r\n else if ( this.colorModel == 'Hex' )\r\n {\r\n this.labelComponent.set(\r\n ( this.useAlpha ? this.currentColor.hex : this.currentColor.hex.substr( 0, 7 ) ).toUpperCase()\r\n );\r\n }\r\n else if ( this.colorModel == 'HSV' )\r\n {\r\n const { h, s, v, a } = this.currentColor.hsv;\r\n const components = [ Math.floor( h ) + 'º', Math.floor( s * 100 ) + '%', Math.floor( v * 100 ) + '%' ];\r\n if ( this.useAlpha ) components.push( toFixed( a ) );\r\n this.labelComponent.set( components.join( ' ' ) );\r\n }\r\n // RGB\r\n else\r\n {\r\n const { r, g, b, a } = this.currentColor.rgb;\r\n const components = [ toFixed( r ), toFixed( g ), toFixed( b ) ];\r\n if ( this.useAlpha ) components.push( toFixed( a ) );\r\n this.labelComponent.set( components.join( ' ' ) );\r\n }\r\n }\r\n\r\n fromHexColor( hexColor: string )\r\n {\r\n this.currentColor.setHex( hexColor );\r\n\r\n // Decompose into HSV\r\n const { h, s, v } = this.currentColor.hsv;\r\n this._svToPosition( s, v );\r\n\r\n const hueColor = new Color( { h, s: 1, v: 1 } );\r\n this.hueMarker.style.backgroundColor =\r\n this.colorPickerBackground.style.backgroundColor =\r\n `rgb(${hueColor.css.r}, ${hueColor.css.g}, ${hueColor.css.b})`;\r\n this.hueMarker.style.left =\r\n LX.remapRange( h, 0, 360, -this.markerHalfSize, this.colorPickerTracker.offsetWidth - this.markerHalfSize )\r\n + 'px';\r\n\r\n this._updateColorValue( hexColor );\r\n }\r\n}\r\n\r\nLX.ColorPicker = ColorPicker;\r\n","// Popover.js @jxarco\r\nimport { LX } from './../core/Namespace';\r\n\r\n/**\r\n * @class Popover\r\n */\r\n\r\nexport class Popover\r\n{\r\n static activeElement: any = null;\r\n\r\n root: any;\r\n side: string = 'bottom';\r\n align: string = 'center';\r\n sideOffset: number = 0;\r\n alignOffset: number = 0;\r\n avoidCollisions: boolean = true;\r\n reference: any;\r\n\r\n _windowPadding: number = 4;\r\n _trigger: any;\r\n _parent: any;\r\n _onClick: any;\r\n\r\n constructor( trigger: any, content: any, options: any = {} )\r\n {\r\n if ( Popover.activeElement )\r\n {\r\n Popover.activeElement.destroy();\r\n return;\r\n }\r\n\r\n this._trigger = trigger;\r\n\r\n if ( trigger )\r\n {\r\n trigger.classList.add( 'triggered' );\r\n trigger.active = this;\r\n }\r\n\r\n this.side = options.side ?? this.side;\r\n this.align = options.align ?? this.align;\r\n this.sideOffset = options.sideOffset ?? this.sideOffset;\r\n this.alignOffset = options.alignOffset ?? this.alignOffset;\r\n this.avoidCollisions = options.avoidCollisions ?? true;\r\n this.reference = options.reference;\r\n\r\n this.root = document.createElement( 'div' );\r\n this.root.dataset['side'] = this.side;\r\n this.root.tabIndex = '1';\r\n this.root.className = 'lexpopover';\r\n\r\n const refElement = trigger ?? this.reference;\r\n const nestedDialog = refElement.closest( 'dialog' );\r\n if ( nestedDialog && nestedDialog.dataset['modal'] == 'true' )\r\n {\r\n this._parent = nestedDialog;\r\n }\r\n else\r\n {\r\n this._parent = LX.root;\r\n }\r\n\r\n this._parent.appendChild( this.root );\r\n\r\n this.root.addEventListener( 'keydown', ( e: KeyboardEvent ) => {\r\n if ( e.key == 'Escape' )\r\n {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.destroy();\r\n }\r\n } );\r\n\r\n if ( content )\r\n {\r\n content = [].concat( content );\r\n content.forEach( ( e: any ) => {\r\n const domNode = e.root ?? e;\r\n this.root.appendChild( domNode );\r\n if ( e.onPopover )\r\n {\r\n e.onPopover();\r\n }\r\n } );\r\n }\r\n\r\n Popover.activeElement = this;\r\n\r\n LX.doAsync( () => {\r\n this._adjustPosition();\r\n\r\n if ( this._trigger )\r\n {\r\n this.root.focus();\r\n\r\n this._onClick = ( e: Event ) => {\r\n if ( e.target && ( this.root.contains( e.target ) || e.target == this._trigger ) )\r\n {\r\n return;\r\n }\r\n this.destroy();\r\n };\r\n\r\n document.body.addEventListener( 'mousedown', this._onClick, true );\r\n document.body.addEventListener( 'focusin', this._onClick, true );\r\n }\r\n }, 10 );\r\n }\r\n\r\n destroy()\r\n {\r\n if ( this._trigger )\r\n {\r\n this._trigger.classList.remove( 'triggered' );\r\n delete this._trigger.active;\r\n\r\n document.body.removeEventListener( 'mousedown', this._onClick, true );\r\n document.body.removeEventListener( 'focusin', this._onClick, true );\r\n }\r\n\r\n this.root.remove();\r\n\r\n Popover.activeElement = null;\r\n }\r\n\r\n _adjustPosition()\r\n {\r\n const position = [ 0, 0 ];\r\n\r\n // Place menu using trigger position and user options\r\n {\r\n const el = this.reference ?? this._trigger;\r\n console.assert( el, 'Popover needs a trigger or reference element!' );\r\n const rect = el.getBoundingClientRect();\r\n\r\n let alignWidth = true;\r\n\r\n switch ( this.side )\r\n {\r\n case 'left':\r\n position[0] += rect.x - this.root.offsetWidth - this.sideOffset;\r\n alignWidth = false;\r\n break;\r\n case 'right':\r\n position[0] += rect.x + rect.width + this.sideOffset;\r\n alignWidth = false;\r\n break;\r\n case 'top':\r\n position[1] += rect.y - this.root.offsetHeight - this.sideOffset;\r\n alignWidth = true;\r\n break;\r\n case 'bottom':\r\n position[1] += rect.y + rect.height + this.sideOffset;\r\n alignWidth = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n switch ( this.align )\r\n {\r\n case 'start':\r\n if ( alignWidth ) position[0] += rect.x;\r\n else position[1] += rect.y;\r\n break;\r\n case 'center':\r\n if ( alignWidth ) position[0] += ( rect.x + rect.width * 0.5 ) - this.root.offsetWidth * 0.5;\r\n else position[1] += ( rect.y + rect.height * 0.5 ) - this.root.offsetHeight * 0.5;\r\n break;\r\n case 'end':\r\n if ( alignWidth ) position[0] += rect.x - this.root.offsetWidth + rect.width;\r\n else position[1] += rect.y - this.root.offsetHeight + rect.height;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if ( alignWidth ) position[0] += this.alignOffset;\r\n else position[1] += this.alignOffset;\r\n }\r\n\r\n if ( this.avoidCollisions )\r\n {\r\n position[0] = LX.clamp( position[0], 0, window.innerWidth - this.root.offsetWidth - this._windowPadding );\r\n position[1] = LX.clamp( position[1], 0, window.innerHeight - this.root.offsetHeight - this._windowPadding );\r\n }\r\n\r\n if ( this._parent instanceof HTMLDialogElement )\r\n {\r\n let parentRect = this._parent.getBoundingClientRect();\r\n position[0] -= parentRect.x;\r\n position[1] -= parentRect.y;\r\n }\r\n\r\n this.root.style.left = `${position[0]}px`;\r\n this.root.style.top = `${position[1]}px`;\r\n }\r\n}\r\n\r\nLX.Popover = Popover;\r\n\r\n/**\r\n * @class PopConfirm\r\n */\r\n\r\nclass PopConfirm\r\n{\r\n _popover: Popover | null = null;\r\n\r\n constructor( reference: any, options: any = {} )\r\n {\r\n const okText = options.confirmText ?? 'Yes';\r\n const cancelText = options.cancelText ?? 'No';\r\n const title = options.title ?? 'Confirm';\r\n const content = options.content ?? 'Are you sure you want to proceed?';\r\n const onConfirm = options.onConfirm;\r\n const onCancel = options.onCancel;\r\n\r\n const popoverContainer = LX.makeContainer( [ 'auto', 'auto' ], 'tour-step-container' );\r\n\r\n {\r\n const headerDiv = LX.makeContainer( [ '100%', 'auto' ], 'flex flex-row', '', popoverContainer );\r\n const titleDiv = LX.makeContainer( [ '100%', 'auto' ], 'p-1 font-medium text-md', title, headerDiv );\r\n }\r\n\r\n LX.makeContainer( [ '100%', 'auto' ], 'p-1 text-md', content, popoverContainer, { maxWidth: '400px' } );\r\n const footer = LX.makeContainer( [ '100%', 'auto' ], 'flex flex-row text-md', '', popoverContainer );\r\n const footerButtons = LX.makeContainer( [ '100%', 'auto' ], 'text-md', '', footer );\r\n const footerPanel = new LX.Panel();\r\n footerButtons.appendChild( footerPanel.root );\r\n\r\n footerPanel.sameLine( 2, 'justify-end' );\r\n footerPanel.addButton( null, cancelText, () => {\r\n if ( onCancel ) onCancel();\r\n this._popover?.destroy();\r\n }, { xbuttonClass: 'contrast' } );\r\n footerPanel.addButton( null, okText, () => {\r\n if ( onConfirm ) onConfirm();\r\n this._popover?.destroy();\r\n }, { buttonClass: 'accent' } );\r\n\r\n this._popover?.destroy();\r\n this._popover = new LX.Popover( null, [ popoverContainer ], {\r\n reference,\r\n side: options.side ?? 'top',\r\n align: options.align,\r\n sideOffset: options.sideOffset,\r\n alignOffset: options.alignOffset\r\n } );\r\n }\r\n}\r\n\r\nLX.PopConfirm = PopConfirm;\r\n","// ColorInput.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\nimport { Color } from './Color';\r\nimport { ColorPicker } from './ColorPicker';\r\nimport { Popover } from './Popover';\r\nimport { TextInput } from './TextInput';\r\n\r\n/**\r\n * @class ColorInput\r\n * @description ColorInput Component\r\n */\r\n\r\nexport class ColorInput extends BaseComponent\r\n{\r\n picker: ColorPicker;\r\n\r\n _skipTextUpdate?: boolean = false;\r\n _popover: Popover | undefined = undefined;\r\n\r\n constructor( name: string, value: any, callback: any, options: any = {} )\r\n {\r\n value = value ?? '#000000';\r\n\r\n const useAlpha = options.useAlpha\r\n ?? ( ( value.constructor === Object && 'a' in value )\r\n || ( value.constructor === String && [ 5, 9 ].includes( value.length ) ) );\r\n\r\n const componentColor = new Color( value );\r\n\r\n // Force always hex internally\r\n value = useAlpha ? componentColor.hex : componentColor.hex.substr( 0, 7 );\r\n\r\n super( ComponentType.COLOR, name, value, options );\r\n\r\n this.onGetValue = () => {\r\n const currentColor = new Color( value );\r\n return options.useRGB ? currentColor.rgb : value;\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n const newColor = new Color( newValue );\r\n\r\n colorSampleRGB.style.color = value = newColor.hex.substr( 0, 7 );\r\n\r\n if ( useAlpha )\r\n {\r\n colorSampleAlpha.style.color = value = newColor.hex;\r\n }\r\n\r\n if ( !this._skipTextUpdate )\r\n {\r\n textComponent.set( value, true, event );\r\n }\r\n\r\n if ( !skipCallback )\r\n {\r\n let retValue = value;\r\n\r\n if ( options.useRGB )\r\n {\r\n retValue = newColor.rgb;\r\n\r\n if ( !useAlpha )\r\n {\r\n delete retValue.a;\r\n }\r\n }\r\n\r\n this._trigger( new IEvent( name, retValue, event ), callback );\r\n }\r\n };\r\n\r\n this.onResize = ( rect ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n container.style.width = `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n var container = document.createElement( 'span' );\r\n container.className = 'lexcolor';\r\n this.root.appendChild( container );\r\n\r\n this.picker = new ColorPicker( value, {\r\n colorModel: options.useRGB ? 'RGB' : 'Hex',\r\n useAlpha,\r\n onChange: ( color: Color ) => {\r\n this.set( color.hex );\r\n }\r\n } );\r\n\r\n let sampleContainer = LX.makeContainer( [ '18px', '18px' ], 'flex flex-row bg-contrast rounded overflow-hidden',\r\n '', container );\r\n sampleContainer.tabIndex = '1';\r\n sampleContainer.addEventListener( 'click', ( e: MouseEvent ) => {\r\n if ( ( options.disabled ?? false ) )\r\n {\r\n return;\r\n }\r\n\r\n this._popover = new Popover( sampleContainer, [ this.picker ] );\r\n } );\r\n\r\n let colorSampleRGB = document.createElement( 'div' );\r\n colorSampleRGB.className = 'lexcolorsample';\r\n colorSampleRGB.style.color = value;\r\n sampleContainer.appendChild( colorSampleRGB );\r\n\r\n let colorSampleAlpha: any = null;\r\n\r\n if ( useAlpha )\r\n {\r\n colorSampleAlpha = document.createElement( 'div' );\r\n colorSampleAlpha.className = 'lexcolorsample';\r\n colorSampleAlpha.style.color = value;\r\n sampleContainer.appendChild( colorSampleAlpha );\r\n }\r\n else\r\n {\r\n colorSampleRGB.style.width = '18px';\r\n }\r\n\r\n const textComponent = new TextInput( null, value, ( v: string ) => {\r\n this._skipTextUpdate = true;\r\n this.set( v );\r\n delete this._skipTextUpdate;\r\n this.picker.fromHexColor( v );\r\n }, { width: 'calc( 100% - 24px )', disabled: options.disabled } );\r\n\r\n textComponent.root.style.marginLeft = '6px';\r\n container.appendChild( textComponent.root );\r\n\r\n LX.doAsync( this.onResize.bind( this ) );\r\n }\r\n}\r\n\r\nLX.Color = Color;\r\nLX.ColorPicker = ColorPicker;\r\nLX.ColorInput = ColorInput;\r\n","// ComboButtons.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\n\r\n/**\r\n * @class ComboButtons\r\n * @description ComboButtons Component\r\n */\r\n\r\nexport class ComboButtons extends BaseComponent\r\n{\r\n constructor( name: string, values: any[], options: any = {} )\r\n {\r\n const shouldSelect = !( options.noSelection ?? false );\r\n let shouldToggle = shouldSelect && ( options.toggle ?? false );\r\n\r\n let container = document.createElement( 'div' );\r\n container.className = 'lexcombobuttons ';\r\n\r\n options.skipReset = true;\r\n\r\n if ( options.float )\r\n {\r\n container.className += options.float;\r\n }\r\n\r\n let currentValue: any = [];\r\n let buttonsBox = document.createElement( 'div' );\r\n buttonsBox.className = 'lexcombobuttonsbox ';\r\n container.appendChild( buttonsBox );\r\n\r\n for ( let b of values )\r\n {\r\n if ( !b.value )\r\n {\r\n throw ( \"Set 'value' for each button!\" );\r\n }\r\n\r\n let buttonEl = document.createElement( 'button' );\r\n buttonEl.className = 'lexbutton combo';\r\n buttonEl.title = b.icon ? b.value : '';\r\n buttonEl.id = b.id ?? '';\r\n buttonEl.dataset['value'] = b.value;\r\n\r\n if ( options.buttonClass )\r\n {\r\n buttonEl.classList.add( options.buttonClass );\r\n }\r\n\r\n if ( shouldSelect && ( b.selected || options.selected?.includes( b.value ) ) )\r\n {\r\n buttonEl.classList.add( 'selected' );\r\n currentValue = currentValue.concat( [ b.value ] );\r\n }\r\n\r\n if ( b.icon )\r\n {\r\n const icon = LX.makeIcon( b.icon );\r\n buttonEl.appendChild( icon );\r\n }\r\n else\r\n {\r\n buttonEl.innerHTML = `<span>${b.value}</span>`;\r\n }\r\n\r\n if ( b.disabled )\r\n {\r\n buttonEl.setAttribute( 'disabled', 'true' );\r\n }\r\n\r\n buttonEl.addEventListener( 'click', ( e ) => {\r\n currentValue = [];\r\n\r\n if ( shouldSelect )\r\n {\r\n if ( shouldToggle )\r\n {\r\n buttonEl.classList.toggle( 'selected' );\r\n }\r\n else\r\n {\r\n container.querySelectorAll( 'button' ).forEach( ( s ) => s.classList.remove( 'selected' ) );\r\n buttonEl.classList.add( 'selected' );\r\n }\r\n }\r\n\r\n container.querySelectorAll( 'button' ).forEach( ( s ) => {\r\n if ( s.classList.contains( 'selected' ) )\r\n {\r\n currentValue.push( s.dataset['value'] );\r\n }\r\n } );\r\n\r\n if ( !shouldToggle && currentValue.length > 1 )\r\n {\r\n console.error( `Enable _options.toggle_ to allow selecting multiple options in ComboButtons.` );\r\n return;\r\n }\r\n\r\n currentValue = currentValue[0];\r\n\r\n this.set( b.value, false, buttonEl.classList.contains( 'selected' ) );\r\n } );\r\n\r\n buttonsBox.appendChild( buttonEl );\r\n }\r\n\r\n if ( currentValue.length > 1 )\r\n {\r\n if ( !shouldToggle )\r\n {\r\n options.toggle = true;\r\n shouldToggle = shouldSelect;\r\n console.warn( `Multiple options selected in '${name}' ComboButtons. Enabling _toggle_ mode.` );\r\n }\r\n }\r\n else\r\n {\r\n currentValue = currentValue[0];\r\n }\r\n\r\n super( ComponentType.BUTTONS, name, null, options );\r\n\r\n this.onGetValue = () => {\r\n return currentValue;\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n if ( shouldSelect && ( event == undefined ) )\r\n {\r\n container.querySelectorAll( 'button' ).forEach( ( s ) => s.classList.remove( 'selected' ) );\r\n\r\n container.querySelectorAll( 'button' ).forEach( ( s ) => {\r\n if ( currentValue && currentValue.indexOf( s.dataset['value'] ) > -1 )\r\n {\r\n s.classList.add( 'selected' );\r\n }\r\n } );\r\n }\r\n\r\n if ( !skipCallback && newValue.constructor != Array )\r\n {\r\n const enabled = event;\r\n const fn = values.filter( ( v ) => v.value == newValue )[0]?.callback;\r\n this._trigger( new IEvent( name, shouldToggle ? [ newValue, enabled ] : newValue, null ), fn );\r\n }\r\n };\r\n\r\n this.onResize = ( rect ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n container.style.width = `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n this.root.appendChild( container );\r\n\r\n LX.doAsync( this.onResize.bind( this ) );\r\n }\r\n}\r\n\r\nLX.ComboButtons = ComboButtons;\r\n","// Counter.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\nimport { Button } from './Button';\r\n\r\n/**\r\n * @class Counter\r\n * @description Counter Component\r\n */\r\n\r\nexport class Counter extends BaseComponent\r\n{\r\n count: number;\r\n\r\n constructor( name: string, value: number, callback: any, options: any = {} )\r\n {\r\n super( ComponentType.COUNTER, name, value, options );\r\n\r\n this.onGetValue = () => {\r\n return this.count;\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n this.count = LX.clamp( newValue, min, max );\r\n input.value = this.count;\r\n if ( !skipCallback )\r\n {\r\n this._trigger( new IEvent( name, newValue, event ), callback );\r\n }\r\n };\r\n\r\n this.count = value;\r\n\r\n const min = options.min ?? 0;\r\n const max = options.max ?? 100;\r\n const step = options.step ?? 1;\r\n\r\n const container = document.createElement( 'div' );\r\n container.className = 'flex flex-row border bg-primary rounded-lg shadow';\r\n this.root.appendChild( container );\r\n\r\n const input = LX.makeElement( 'input', 'lexcounter w-12 bg-primary px-2 fg-primary', '', container );\r\n input.type = 'number';\r\n input.value = value;\r\n\r\n if ( options.disabled )\r\n {\r\n input.setAttribute( 'disabled', 'true' );\r\n }\r\n\r\n const substrButton = new Button( null, '', ( value: any, e: MouseEvent ) => {\r\n let mult = step ?? 1;\r\n if ( e.shiftKey ) mult *= 10;\r\n this.set( this.count - mult, false, e );\r\n }, { disabled: options.disabled,\r\n className: `p-0 ${options.disabled ? '' : 'hover:bg-secondary'} border-left border-right`,\r\n buttonClass: 'bg-none', icon: 'Minus' } );\r\n container.appendChild( substrButton.root );\r\n\r\n const addButton = new Button( null, '', ( value: any, e: MouseEvent ) => {\r\n let mult = step ?? 1;\r\n if ( e.shiftKey ) mult *= 10;\r\n this.set( this.count + mult, false, e );\r\n }, { disabled: options.disabled, className: `p-0 ${options.disabled ? '' : 'hover:bg-secondary'} rounded-r-lg`,\r\n buttonClass: 'bg-none', icon: 'Plus' } );\r\n container.appendChild( addButton.root );\r\n }\r\n}\r\n\r\nLX.Counter = Counter;\r\n","// CanvasCurve.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\n\r\n/**\r\n * @class CanvasCurve\r\n * @description A canvas-based curve editor, used internally by the Curve component.\r\n */\r\n\r\nexport class CanvasCurve\r\n{\r\n element: any;\r\n canvas: HTMLCanvasElement;\r\n\r\n constructor( value: any[], options: any = {} )\r\n {\r\n let element: any = document.createElement( 'div' );\r\n element.className = 'curve ' + ( options.className ? options.className : '' );\r\n element.style.minHeight = '50px';\r\n element.style.width = options.width || '100%';\r\n element.style.minWidth = '50px';\r\n element.style.minHeight = '20px';\r\n\r\n element.bgcolor = options.bgColor || LX.getThemeColor( 'global-background' );\r\n element.pointscolor = options.pointsColor || LX.getThemeColor( 'global-color-accent' );\r\n element.activepointscolor = options.activePointsColor || LX.getThemeColor( 'global-color-accent-light' );\r\n element.linecolor = options.lineColor || '#555';\r\n element.value = value || [];\r\n element.xrange = options.xrange || [ 0, 1 ]; // min, max\r\n element.yrange = options.yrange || [ 0, 1 ]; // min, max\r\n element.defaulty = options.defaulty != null ? options.defaulty : 0.0;\r\n element.no_overlap = options.noOverlap || false;\r\n element.show_samples = options.showSamples || 0;\r\n element.allow_add_values = options.allowAddValues ?? true;\r\n element.draggable_x = options.draggableX ?? true;\r\n element.draggable_y = options.draggableY ?? true;\r\n element.smooth = ( options.smooth && typeof ( options.smooth ) == 'number' ? options.smooth : 0.3 ) || false;\r\n element.move_out = options.moveOutAction ?? LX.CURVE_MOVEOUT_DELETE;\r\n\r\n LX.addSignal( '@on_new_color_scheme', ( el: HTMLElement, value: string ) => {\r\n element.bgcolor = options.bgColor || LX.getThemeColor( 'global-background' );\r\n element.pointscolor = options.pointsColor || LX.getThemeColor( 'global-color-accent' );\r\n element.activepointscolor = options.activePointsColor || LX.getThemeColor( 'global-color-accent-light' );\r\n this.redraw();\r\n } );\r\n\r\n this.element = element;\r\n\r\n let canvas = document.createElement( 'canvas' );\r\n canvas.width = options.width || 200;\r\n canvas.height = options.height || 50;\r\n element.appendChild( canvas );\r\n this.canvas = canvas;\r\n\r\n element.addEventListener( 'mousedown', onmousedown );\r\n\r\n element.getValueAt = function( x: number )\r\n {\r\n if ( x < element.xrange[0] || x > element.xrange[1] )\r\n {\r\n return element.defaulty;\r\n }\r\n\r\n let last = [ element.xrange[0], element.defaulty ];\r\n let f = 0;\r\n for ( let i = 0; i < element.value.length; i += 1 )\r\n {\r\n let v = element.value[i];\r\n if ( x == v[0] ) return v[1];\r\n if ( x < v[0] )\r\n {\r\n f = ( x - last[0] ) / ( v[0] - last[0] );\r\n return last[1] * ( 1 - f ) + v[1] * f;\r\n }\r\n\r\n last = v;\r\n }\r\n\r\n let v = [ element.xrange[1], element.defaulty ];\r\n f = ( x - last[0] ) / ( v[0] - last[0] );\r\n return last[1] * ( 1 - f ) + v[1] * f;\r\n };\r\n\r\n element.resample = function( samples: number )\r\n {\r\n let r = [];\r\n let dx = ( element.xrange[1] - element.xrange[0] ) / samples;\r\n for ( let i = element.xrange[0]; i <= element.xrange[1]; i += dx )\r\n {\r\n r.push( element.getValueAt( i ) );\r\n }\r\n return r;\r\n };\r\n\r\n element.addValue = function( v: number[] )\r\n {\r\n for ( let i = 0; i < element.value; i++ )\r\n {\r\n let value = element.value[i];\r\n if ( value[0] < v[0] ) continue;\r\n element.value.splice( i, 0, v );\r\n this.redraw();\r\n return;\r\n }\r\n\r\n element.value.push( v );\r\n this.redraw();\r\n };\r\n\r\n // Value to canvas\r\n function convert( v: number[] )\r\n {\r\n return [ canvas.width * ( v[0] - element.xrange[0] ) / ( element.xrange[1] ),\r\n canvas.height * ( v[1] - element.yrange[0] ) / ( element.yrange[1] ) ];\r\n }\r\n\r\n // Canvas to value\r\n function unconvert( v: number[] )\r\n {\r\n return [ v[0] * element.xrange[1] / canvas.width + element.xrange[0],\r\n v[1] * element.yrange[1] / canvas.height + element.yrange[0] ];\r\n }\r\n\r\n let selected = -1;\r\n\r\n element.redraw = function( o: any = {} )\r\n {\r\n if ( o.value ) element.value = o.value;\r\n if ( o.xrange ) element.xrange = o.xrange;\r\n if ( o.yrange ) element.yrange = o.yrange;\r\n if ( o.smooth ) element.smooth = o.smooth;\r\n\r\n var ctx: CanvasRenderingContext2D | null = canvas.getContext( '2d' );\r\n if ( !ctx ) return;\r\n\r\n ctx.setTransform( 1, 0, 0, 1, 0, 0 );\r\n ctx.translate( 0, canvas.height );\r\n ctx.scale( 1, -1 );\r\n\r\n ctx.fillStyle = element.bgcolor;\r\n ctx.fillRect( 0, 0, canvas.width, canvas.height );\r\n\r\n ctx.strokeStyle = element.linecolor;\r\n ctx.beginPath();\r\n\r\n // draw line\r\n var pos = convert( [ element.xrange[0], element.defaulty ] );\r\n ctx.moveTo( pos[0], pos[1] );\r\n let values = [ pos[0], pos[1] ];\r\n\r\n for ( var i in element.value )\r\n {\r\n var value: number[] = element.value[i];\r\n pos = convert( value );\r\n values.push( pos[0] );\r\n values.push( pos[1] );\r\n if ( !element.smooth )\r\n {\r\n ctx.lineTo( pos[0], pos[1] );\r\n }\r\n }\r\n\r\n pos = convert( [ element.xrange[1], element.defaulty ] );\r\n values.push( pos[0] );\r\n values.push( pos[1] );\r\n if ( !element.smooth )\r\n {\r\n ctx.lineTo( pos[0], pos[1] );\r\n ctx.stroke();\r\n }\r\n else\r\n {\r\n LX.drawSpline( ctx, values, element.smooth );\r\n }\r\n\r\n // Draw points\r\n for ( var idx = 0; idx < element.value.length; idx += 1 )\r\n {\r\n var value: number[] = element.value[idx];\r\n pos = convert( value );\r\n const selectedIndex = idx == selected;\r\n if ( selectedIndex )\r\n {\r\n ctx.fillStyle = element.activepointscolor;\r\n }\r\n else\r\n {\r\n ctx.fillStyle = element.pointscolor;\r\n }\r\n ctx.beginPath();\r\n ctx.arc( pos[0], pos[1], selectedIndex ? 4 : 3, 0, Math.PI * 2 );\r\n ctx.fill();\r\n }\r\n\r\n if ( element.show_samples )\r\n {\r\n var samples = element.resample( element.show_samples );\r\n ctx.fillStyle = '#888';\r\n for ( var idx = 0; idx < samples.length; idx += 1 )\r\n {\r\n var value: number[] = [\r\n idx * ( ( element.xrange[1] - element.xrange[0] ) / element.show_samples ) + element.xrange[0],\r\n samples[idx]\r\n ];\r\n pos = convert( value );\r\n ctx.beginPath();\r\n ctx.arc( pos[0], pos[1], 2, 0, Math.PI * 2 );\r\n ctx.fill();\r\n }\r\n }\r\n };\r\n\r\n var last_mouse = [ 0, 0 ];\r\n\r\n function onmousedown( e: MouseEvent )\r\n {\r\n document.addEventListener( 'mousemove', onmousemove );\r\n document.addEventListener( 'mouseup', onmouseup );\r\n\r\n var rect = canvas.getBoundingClientRect();\r\n var mousex = e.clientX - rect.left;\r\n var mousey = e.clientY - rect.top;\r\n\r\n selected = computeSelected( mousex, canvas.height - mousey );\r\n\r\n if ( e.button == LX.MOUSE_LEFT_CLICK && selected == -1 && element.allow_add_values )\r\n {\r\n var v = unconvert( [ mousex, canvas.height - mousey ] );\r\n element.value.push( v );\r\n sortValues();\r\n selected = element.value.indexOf( v );\r\n }\r\n\r\n last_mouse = [ mousex, mousey ];\r\n element.redraw();\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n\r\n function onmousemove( e: MouseEvent )\r\n {\r\n var rect = canvas.getBoundingClientRect();\r\n var mousex = e.clientX - rect.left;\r\n var mousey = e.clientY - rect.top;\r\n\r\n if ( mousex < 0 ) mousex = 0;\r\n else if ( mousex > canvas.width ) mousex = canvas.width;\r\n if ( mousey < 0 ) mousey = 0;\r\n else if ( mousey > canvas.height ) mousey = canvas.height;\r\n\r\n // Dragging to remove\r\n const currentMouseDiff = [ e.clientX - rect.left, e.clientY - rect.top ];\r\n if ( selected != -1 && distance( currentMouseDiff, [ mousex, mousey ] ) > canvas.height * 0.5 )\r\n {\r\n if ( element.move_out == LX.CURVE_MOVEOUT_DELETE )\r\n {\r\n element.value.splice( selected, 1 );\r\n }\r\n else\r\n {\r\n const d = [ currentMouseDiff[0] - mousex, currentMouseDiff[1] - mousey ];\r\n let value = element.value[selected];\r\n value[0] = ( d[0] == 0.0 ) ? value[0] : ( d[0] < 0.0 ? element.xrange[0] : element.xrange[1] );\r\n value[1] = ( d[1] == 0.0 ) ? value[1] : ( d[1] < 0.0 ? element.yrange[1] : element.yrange[0] );\r\n }\r\n\r\n onmouseup( e );\r\n return;\r\n }\r\n\r\n var dx = element.draggable_x ? last_mouse[0] - mousex : 0;\r\n var dy = element.draggable_y ? last_mouse[1] - mousey : 0;\r\n var delta = unconvert( [ -dx, dy ] );\r\n\r\n if ( selected != -1 )\r\n {\r\n var minx = element.xrange[0];\r\n var maxx = element.xrange[1];\r\n\r\n if ( element.no_overlap )\r\n {\r\n if ( selected > 0 ) minx = element.value[selected - 1][0];\r\n if ( selected < ( element.value.length - 1 ) ) maxx = element.value[selected + 1][0];\r\n }\r\n\r\n var v = element.value[selected];\r\n v[0] += delta[0];\r\n v[1] += delta[1];\r\n if ( v[0] < minx ) v[0] = minx;\r\n else if ( [ 0 ] > maxx ) v[0] = maxx;\r\n if ( v[1] < element.yrange[0] ) v[1] = element.yrange[0];\r\n else if ( v[1] > element.yrange[1] ) v[1] = element.yrange[1];\r\n }\r\n\r\n sortValues();\r\n element.redraw();\r\n last_mouse[0] = mousex;\r\n last_mouse[1] = mousey;\r\n onchange( e );\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n\r\n function onmouseup( e: MouseEvent )\r\n {\r\n selected = -1;\r\n element.redraw();\r\n document.removeEventListener( 'mousemove', onmousemove );\r\n document.removeEventListener( 'mouseup', onmouseup );\r\n onchange( e );\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n\r\n function onchange( e: MouseEvent )\r\n {\r\n if ( options.callback )\r\n {\r\n options.callback.call( element, element.value, e );\r\n }\r\n }\r\n\r\n function distance( a: number[], b: number[] )\r\n {\r\n return Math.sqrt( Math.pow( b[0] - a[0], 2 ) + Math.pow( b[1] - a[1], 2 ) );\r\n }\r\n\r\n function computeSelected( x: number, y: number )\r\n {\r\n var minDistance = 100000;\r\n var maxDistance = 8; // pixels\r\n var selected = -1;\r\n for ( var i = 0; i < element.value.length; i++ )\r\n {\r\n var value = element.value[i];\r\n var pos = convert( value );\r\n var dist = distance( [ x, y ], pos );\r\n if ( dist < minDistance && dist < maxDistance )\r\n {\r\n minDistance = dist;\r\n selected = i;\r\n }\r\n }\r\n return selected;\r\n }\r\n\r\n function sortValues()\r\n {\r\n var v = null;\r\n if ( selected != -1 )\r\n {\r\n v = element.value[selected];\r\n }\r\n element.value.sort( function( a: number[], b: number[] )\r\n {\r\n return a[0] - b[0];\r\n } );\r\n if ( v )\r\n {\r\n selected = element.value.indexOf( v );\r\n }\r\n }\r\n\r\n element.redraw();\r\n return this;\r\n }\r\n\r\n redraw( options: any = {} )\r\n {\r\n this.element.redraw( options );\r\n }\r\n}\r\n","// Curve.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\nimport { CanvasCurve } from './CanvasCurve';\r\n\r\n/**\r\n * @class Curve\r\n * @description Curve Component\r\n */\r\n\r\nexport class Curve extends BaseComponent\r\n{\r\n curveInstance: CanvasCurve;\r\n\r\n constructor( name: string, values: any[], callback: any, options: any = {} )\r\n {\r\n let defaultValues = JSON.parse( JSON.stringify( values ) );\r\n\r\n super( ComponentType.CURVE, name, defaultValues, options );\r\n\r\n this.onGetValue = () => {\r\n return JSON.parse( JSON.stringify( curveInstance.element.value ) );\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n curveInstance.element.value = JSON.parse( JSON.stringify( newValue ) );\r\n curveInstance.redraw();\r\n if ( !skipCallback )\r\n {\r\n this._trigger( new IEvent( name, curveInstance.element.value, event ), callback );\r\n }\r\n };\r\n\r\n this.onResize = ( rect ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n container.style.width = `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n var container = document.createElement( 'div' );\r\n container.className = 'lexcurve';\r\n this.root.appendChild( container );\r\n\r\n options.callback = ( v: any[], e: MouseEvent ) => {\r\n this._trigger( new IEvent( name, v, e ), callback );\r\n };\r\n\r\n options.name = name;\r\n\r\n let curveInstance = new CanvasCurve( values, options );\r\n container.appendChild( curveInstance.element );\r\n this.curveInstance = curveInstance;\r\n\r\n const observer = new ResizeObserver( ( entries ) => {\r\n for ( const entry of entries )\r\n {\r\n curveInstance.canvas.width = entry.contentRect.width;\r\n curveInstance.redraw();\r\n }\r\n } );\r\n\r\n observer.observe( container );\r\n\r\n LX.doAsync( this.onResize.bind( this ) );\r\n }\r\n}\r\n\r\nLX.CanvasCurve = CanvasCurve;\r\nLX.Curve = Curve;\r\n","// Calendar.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\n\r\nexport class Calendar\r\n{\r\n /**\r\n * @constructor Calendar\r\n * @param {String} dateString D/M/Y\r\n * @param {Object} options\r\n */\r\n\r\n root: HTMLElement;\r\n\r\n day: number = -1;\r\n month: number = -1;\r\n year: number = -1;\r\n monthName: string = '';\r\n firstDay: number = -1;\r\n daysInMonth: number = -1;\r\n calendarDays: any[] = [];\r\n currentDate: any;\r\n range: string[];\r\n\r\n untilToday: boolean;\r\n fromToday: boolean;\r\n skipPrevMonth: boolean;\r\n skipNextMonth: boolean;\r\n\r\n onChange: any;\r\n onPreviousMonth: any;\r\n onNextMonth: any;\r\n\r\n constructor( dateString?: string, options: any = {} )\r\n {\r\n this.root = LX.makeContainer( [ '256px', 'auto' ], 'p-1 text-md' );\r\n\r\n this.onChange = options.onChange;\r\n this.onPreviousMonth = options.onPreviousMonth;\r\n this.onNextMonth = options.onNextMonth;\r\n\r\n this.untilToday = options.untilToday;\r\n this.fromToday = options.fromToday;\r\n this.range = options.range;\r\n\r\n this.skipPrevMonth = options.skipPrevMonth;\r\n this.skipNextMonth = options.skipNextMonth;\r\n\r\n if ( dateString )\r\n {\r\n this.fromDateString( dateString );\r\n }\r\n else\r\n {\r\n const date = new Date();\r\n this.month = date.getMonth() + 1;\r\n this.year = date.getFullYear();\r\n this.fromMonthYear( this.month, this.year );\r\n }\r\n }\r\n\r\n _getCurrentDate()\r\n {\r\n return {\r\n day: this.day,\r\n month: this.month,\r\n year: this.year,\r\n fullDate: this.getFullDate()\r\n };\r\n }\r\n\r\n _previousMonth( skipCallback?: boolean )\r\n {\r\n this.month = Math.max( 1, this.month - 1 );\r\n\r\n if ( this.month == 1 )\r\n {\r\n this.month = 12;\r\n this.year--;\r\n }\r\n\r\n this.fromMonthYear( this.month, this.year );\r\n\r\n if ( !skipCallback && this.onPreviousMonth )\r\n {\r\n this.onPreviousMonth( this.currentDate );\r\n }\r\n }\r\n\r\n _nextMonth( skipCallback?: boolean )\r\n {\r\n this.month = Math.min( this.month + 1, 13 );\r\n\r\n if ( this.month == 13 )\r\n {\r\n this.month = 1;\r\n this.year++;\r\n }\r\n\r\n this.fromMonthYear( this.month, this.year );\r\n\r\n if ( !skipCallback && this.onNextMonth )\r\n {\r\n this.onNextMonth( this.currentDate );\r\n }\r\n }\r\n\r\n refresh()\r\n {\r\n this.root.innerHTML = '';\r\n\r\n // Header\r\n {\r\n const header = LX.makeContainer( [ '100%', 'auto' ], 'flex flex-row p-1', '', this.root );\r\n\r\n if ( !this.skipPrevMonth )\r\n {\r\n const prevMonthIcon = LX.makeIcon( 'Left', { title: 'Previous Month',\r\n iconClass: 'border p-1 rounded hover:bg-secondary', svgClass: 'sm' } );\r\n header.appendChild( prevMonthIcon );\r\n prevMonthIcon.addEventListener( 'click', () => {\r\n this._previousMonth();\r\n } );\r\n }\r\n\r\n const monthYearLabel = LX.makeContainer( [ '100%', 'auto' ], 'text-center font-medium select-none',\r\n `${this.monthName} ${this.year}`, header );\r\n\r\n if ( !this.skipNextMonth )\r\n {\r\n const nextMonthIcon = LX.makeIcon( 'Right', { title: 'Next Month',\r\n iconClass: 'border p-1 rounded hover:bg-secondary', svgClass: 'sm' } );\r\n header.appendChild( nextMonthIcon );\r\n nextMonthIcon.addEventListener( 'click', () => {\r\n this._nextMonth();\r\n } );\r\n }\r\n }\r\n\r\n // Body\r\n {\r\n const daysTable = document.createElement( 'table' );\r\n daysTable.className = 'w-full';\r\n this.root.appendChild( daysTable );\r\n\r\n // Table Head\r\n {\r\n const head = document.createElement( 'thead' );\r\n daysTable.appendChild( head );\r\n\r\n const hrow = document.createElement( 'tr' );\r\n\r\n for ( const headData of [ 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su' ] )\r\n {\r\n const th = document.createElement( 'th' );\r\n th.className = 'fg-tertiary text-sm font-normal select-none';\r\n th.innerHTML = `<span>${headData}</span>`;\r\n hrow.appendChild( th );\r\n }\r\n\r\n head.appendChild( hrow );\r\n }\r\n\r\n // Table Body\r\n {\r\n const body = document.createElement( 'tbody' );\r\n daysTable.appendChild( body );\r\n\r\n let fromRangeDate = this.range ? LX.dateFromDateString( this.range[0] ) : null;\r\n let toRangeDate = this.range ? LX.dateFromDateString( this.range[1] ) : null;\r\n\r\n for ( let week = 0; week < 6; week++ )\r\n {\r\n const hrow = document.createElement( 'tr' );\r\n const weekDays = this.calendarDays.slice( week * 7, week * 7 + 7 );\r\n\r\n for ( const dayData of weekDays )\r\n {\r\n const th = document.createElement( 'th' );\r\n th.className = 'leading-loose font-normal rounded select-none cursor-pointer';\r\n\r\n const dayDate = new Date( `${this.month}/${dayData.day}/${this.year}` );\r\n const date = new Date();\r\n // today inclusives\r\n const beforeToday = this.untilToday ? ( dayDate.getTime() < date.getTime() ) : true;\r\n const afterToday = this.fromToday\r\n ? ( dayDate.getFullYear() > date.getFullYear()\r\n || ( dayDate.getFullYear() === date.getFullYear()\r\n && dayDate.getMonth() > date.getMonth() )\r\n || ( dayDate.getFullYear() === date.getFullYear()\r\n && dayDate.getMonth() === date.getMonth() && dayDate.getDate() >= date.getDate() ) )\r\n : true;\r\n const selectable = dayData.currentMonth && beforeToday && afterToday;\r\n const currentDay = this.currentDate && ( dayData.day == this.currentDate.day )\r\n && ( this.month == this.currentDate.month )\r\n && ( this.year == this.currentDate.year ) && dayData.currentMonth;\r\n const currentFromRange = selectable && fromRangeDate\r\n && ( dayData.day == fromRangeDate.getDate() )\r\n && ( this.month == ( fromRangeDate.getMonth() + 1 ) )\r\n && ( this.year == fromRangeDate.getFullYear() );\r\n const currentToRange = selectable && toRangeDate && ( dayData.day == toRangeDate.getDate() )\r\n && ( this.month == ( toRangeDate.getMonth() + 1 ) )\r\n && ( this.year == toRangeDate.getFullYear() );\r\n\r\n if ( ( !this.range && currentDay ) || this.range && ( currentFromRange || currentToRange ) )\r\n {\r\n th.className += ` bg-contrast fg-contrast`;\r\n }\r\n else if ( this.range && selectable && ( dayDate > fromRangeDate ) && ( dayDate < toRangeDate ) )\r\n {\r\n th.className += ` bg-accent fg-contrast`;\r\n }\r\n else\r\n {\r\n th.className += ` ${selectable ? 'fg-primary' : 'fg-tertiary'} hover:bg-secondary`;\r\n }\r\n\r\n th.innerHTML = `<span>${dayData.day}</span>`;\r\n hrow.appendChild( th );\r\n\r\n if ( selectable )\r\n {\r\n th.addEventListener( 'click', () => {\r\n this.day = dayData.day;\r\n this.currentDate = this._getCurrentDate();\r\n if ( this.onChange )\r\n {\r\n this.onChange( this.currentDate );\r\n }\r\n } );\r\n }\r\n // This event should only be applied in non current month days\r\n else if ( this.range === undefined && !dayData.currentMonth )\r\n {\r\n th.addEventListener( 'click', () => {\r\n if ( dayData?.prevMonth )\r\n {\r\n this._previousMonth();\r\n }\r\n else\r\n {\r\n this._nextMonth();\r\n }\r\n } );\r\n }\r\n }\r\n\r\n body.appendChild( hrow );\r\n }\r\n }\r\n }\r\n }\r\n\r\n fromDateString( dateString: string )\r\n {\r\n const tokens = dateString.split( '/' );\r\n\r\n this.day = parseInt( tokens[0] );\r\n this.month = parseInt( tokens[1] );\r\n this.monthName = this.getMonthName( this.month - 1 );\r\n this.year = parseInt( tokens[2] );\r\n\r\n this.currentDate = this._getCurrentDate();\r\n\r\n this.fromMonthYear( this.month, this.year );\r\n }\r\n\r\n fromMonthYear( month: number, year?: number )\r\n {\r\n // Month is 0-based (0 = January, ... 11 = December)\r\n month = Math.max( month - 1, 0 );\r\n year = year ?? new Date().getFullYear();\r\n\r\n const weekDay = new Date( year, month, 1 ).getDay();\r\n const firstDay = weekDay === 0 ? 6 : weekDay - 1; // 0 = Monday, 1 = Tuesday...\r\n const daysInMonth = new Date( year, month + 1, 0 ).getDate();\r\n\r\n // Previous month\r\n const prevMonth = month === 0 ? 11 : month - 1;\r\n const prevYear = month === 0 ? year - 1 : year;\r\n const daysInPrevMonth = new Date( prevYear, prevMonth + 1, 0 ).getDate();\r\n\r\n // Prepare full grid (up to 6 weeks = 42 days)\r\n const calendarDays = [];\r\n\r\n // Fill in days from previous month\r\n for ( let i = firstDay - 1; i >= 0; i-- )\r\n {\r\n calendarDays.push( { day: daysInPrevMonth - i, currentMonth: false, prevMonth: true } );\r\n }\r\n\r\n // Fill in current month days\r\n for ( let i = 1; i <= daysInMonth; i++ )\r\n {\r\n calendarDays.push( { day: i, currentMonth: true } );\r\n }\r\n\r\n // Fill in next month days to complete the grid (if needed)\r\n const remaining = 42 - calendarDays.length;\r\n for ( let i = 1; i <= remaining; i++ )\r\n {\r\n calendarDays.push( { day: i, currentMonth: false, nextMonth: true } );\r\n }\r\n\r\n this.monthName = this.getMonthName( month );\r\n this.firstDay = firstDay;\r\n this.daysInMonth = daysInMonth;\r\n this.calendarDays = calendarDays;\r\n\r\n this.refresh();\r\n }\r\n\r\n getMonthName( monthIndex: number, locale = 'en-US' )\r\n {\r\n const formatter = new Intl.DateTimeFormat( locale, { month: 'long' } );\r\n return formatter.format( new Date( 2000, monthIndex, 1 ) );\r\n }\r\n\r\n getFullDate( monthName?: string, day?: number, year?: number )\r\n {\r\n return `${monthName ?? this.monthName} ${day ?? this.day}${this._getOrdinalSuffix( day ?? this.day )}, ${\r\n year ?? this.year\r\n }`;\r\n }\r\n\r\n setRange( range: string[] )\r\n {\r\n console.assert( range.constructor === Array, 'Date Range must be in Array format' );\r\n this.range = range;\r\n this.refresh();\r\n }\r\n\r\n setMonth( month: number )\r\n {\r\n this.month = month;\r\n this.fromMonthYear( this.month, this.year );\r\n }\r\n\r\n _getOrdinalSuffix( day: number )\r\n {\r\n if ( day > 3 && day < 21 ) return 'th';\r\n switch ( day % 10 )\r\n {\r\n case 1:\r\n return 'st';\r\n case 2:\r\n return 'nd';\r\n case 3:\r\n return 'rd';\r\n default:\r\n return 'th';\r\n }\r\n }\r\n}\r\n\r\nLX.Calendar = Calendar;\r\n","// CalendarRange.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\nimport { Calendar } from './Calendar';\r\n\r\nexport class CalendarRange\r\n{\r\n /**\r\n * @constructor CalendarRange\r\n * @param {Array} range [\"DD/MM/YYYY\", \"DD/MM/YYYY\"]\r\n * @param {Object} options\r\n */\r\n\r\n root: HTMLElement;\r\n\r\n fromCalendar: Calendar;\r\n toCalendar: Calendar;\r\n\r\n from: string;\r\n to: string;\r\n\r\n _selectingRange: boolean = false;\r\n\r\n constructor( range: string[], options: any = {} )\r\n {\r\n this.root = LX.makeContainer( [ 'auto', 'auto' ], 'flex flex-row' );\r\n\r\n console.assert( range && range.constructor === Array, 'Range cannot be empty and has to be an Array!' );\r\n\r\n let mustSetMonth = null;\r\n let dateReversed = false;\r\n\r\n // Fix any issues with date range picking\r\n {\r\n const t0 = LX.dateFromDateString( range[0] );\r\n const t1 = LX.dateFromDateString( range[1] );\r\n\r\n if ( t0 > t1 )\r\n {\r\n const tmp = range[0];\r\n range[0] = range[1];\r\n range[1] = tmp;\r\n dateReversed = true;\r\n }\r\n\r\n mustSetMonth = ( dateReversed ? t1.getMonth() : t0.getMonth() ) + 2; // +1 to convert range, +1 to use next month\r\n }\r\n\r\n this.from = range[0];\r\n this.to = range[1];\r\n\r\n const onChange = ( date: any ) => {\r\n const newDateString = `${date.day}/${date.month}/${date.year}`;\r\n\r\n if ( !this._selectingRange )\r\n {\r\n this.from = this.to = newDateString;\r\n this._selectingRange = true;\r\n }\r\n else\r\n {\r\n this.to = newDateString;\r\n this._selectingRange = false;\r\n }\r\n\r\n const newRange = [ this.from, this.to ];\r\n\r\n this.fromCalendar.setRange( newRange );\r\n this.toCalendar.setRange( newRange );\r\n\r\n if ( options.onChange )\r\n {\r\n options.onChange( newRange );\r\n }\r\n };\r\n\r\n this.fromCalendar = new Calendar( this.from, {\r\n skipNextMonth: true,\r\n onChange,\r\n onPreviousMonth: () => {\r\n this.toCalendar._previousMonth();\r\n },\r\n range\r\n } );\r\n\r\n this.toCalendar = new Calendar( this.to, {\r\n skipPrevMonth: true,\r\n onChange,\r\n onNextMonth: () => {\r\n this.fromCalendar._nextMonth();\r\n },\r\n range\r\n } );\r\n\r\n console.assert( mustSetMonth && 'New Month must be valid' );\r\n this.toCalendar.setMonth( mustSetMonth );\r\n\r\n this.root.appendChild( this.fromCalendar.root );\r\n this.root.appendChild( this.toCalendar.root );\r\n }\r\n\r\n getFullDate()\r\n {\r\n const d0 = LX.dateFromDateString( this.from );\r\n const d0Month = this.fromCalendar.getMonthName( d0.getMonth() );\r\n\r\n const d1 = LX.dateFromDateString( this.to );\r\n const d1Month = this.toCalendar.getMonthName( d1.getMonth() );\r\n\r\n return `${this.fromCalendar.getFullDate( d0Month, d0.getDate(), d0.getFullYear() )} to ${\r\n this.toCalendar.getFullDate( d1Month, d1.getDate(), d1.getFullYear() )\r\n }`;\r\n }\r\n}\r\n\r\nLX.CalendarRange = CalendarRange;\r\n","// DatePicker.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\nimport { Button } from './Button';\r\nimport { Calendar } from './Calendar';\r\nimport { CalendarRange } from './CalendarRange';\r\nimport { Popover } from './Popover';\r\n\r\n/**\r\n * @class DatePicker\r\n * @description DatePicker Component\r\n */\r\n\r\nexport class DatePicker extends BaseComponent\r\n{\r\n calendar: Calendar | CalendarRange;\r\n\r\n _popover: Popover | undefined = undefined;\r\n\r\n constructor( name: string, dateValue: string | string[], callback: any, options: any = {} )\r\n {\r\n super( ComponentType.DATE, name, null, options );\r\n\r\n const dateAsRange = dateValue?.constructor === Array;\r\n\r\n if ( !dateAsRange && options.today )\r\n {\r\n const date = new Date();\r\n dateValue = `${date.getDate()}/${date.getMonth() + 1}/${date.getFullYear()}`;\r\n }\r\n\r\n this.onGetValue = () => {\r\n return dateValue;\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n if ( !dateAsRange )\r\n {\r\n ( this.calendar as Calendar ).fromDateString( newValue );\r\n }\r\n\r\n dateValue = newValue;\r\n\r\n refresh( this.calendar.getFullDate() );\r\n\r\n if ( !skipCallback )\r\n {\r\n this._trigger( new IEvent( name, newValue, event ), callback );\r\n }\r\n };\r\n\r\n this.onResize = ( rect ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n container.style.width = `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n const container = LX.makeContainer( [ 'auto', 'auto' ], 'lexdate flex flex-row' );\r\n this.root.appendChild( container );\r\n\r\n if ( !dateAsRange )\r\n {\r\n this.calendar = new Calendar( dateValue as string, {\r\n onChange: ( date: any ) => {\r\n const newDateString = `${date.day}/${date.month}/${date.year}`;\r\n this.set( newDateString );\r\n },\r\n ...options\r\n } );\r\n }\r\n else\r\n {\r\n this.calendar = new CalendarRange( dateValue as string[], {\r\n onChange: ( dateRange: any ) => {\r\n this.set( dateRange );\r\n },\r\n ...options\r\n } );\r\n }\r\n\r\n const refresh = ( currentDate?: any ) => {\r\n const emptyDate = !!currentDate;\r\n\r\n container.innerHTML = '';\r\n\r\n currentDate = currentDate ?? 'Pick a date';\r\n\r\n const dts = currentDate.split( ' to ' );\r\n const d0 = dateAsRange ? dts[0] : currentDate;\r\n\r\n const calendarIcon = LX.makeIcon( 'Calendar' );\r\n const calendarButton = new Button( null, d0, () => {\r\n this._popover = new Popover( calendarButton.root, [ this.calendar ] );\r\n }, { buttonClass: `flex flex-row px-3 ${emptyDate ? '' : 'fg-tertiary'} justify-between` } );\r\n calendarButton.root.querySelector( 'button' ).appendChild( calendarIcon );\r\n calendarButton.root.style.width = '100%';\r\n container.appendChild( calendarButton.root );\r\n\r\n if ( dateAsRange )\r\n {\r\n const arrowRightIcon = LX.makeIcon( 'ArrowRight' );\r\n LX.makeContainer( [ '32px', 'auto' ], 'content-center', arrowRightIcon.innerHTML, container );\r\n\r\n const d1 = dts[1];\r\n const calendarIcon = LX.makeIcon( 'Calendar' );\r\n const calendarButton = new Button( null, d1, () => {\r\n this._popover = new Popover( calendarButton.root, [ this.calendar ] );\r\n }, { buttonClass: `flex flex-row px-3 ${emptyDate ? '' : 'fg-tertiary'} justify-between` } );\r\n calendarButton.root.querySelector( 'button' ).appendChild( calendarIcon );\r\n calendarButton.root.style.width = '100%';\r\n container.appendChild( calendarButton.root );\r\n }\r\n };\r\n\r\n if ( dateValue )\r\n {\r\n refresh( this.calendar.getFullDate() );\r\n }\r\n else\r\n {\r\n refresh();\r\n }\r\n\r\n LX.doAsync( this.onResize.bind( this ) );\r\n }\r\n}\r\n\r\nLX.Calendar = Calendar;\r\nLX.CalendarRange = CalendarRange;\r\nLX.DatePicker = DatePicker;\r\n","// CanvasDial.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\n\r\n/**\r\n * @class CanvasDial\r\n * @description A canvas-based dial, used internally by the Dial component.\r\n */\r\n\r\nclass CanvasDial\r\n{\r\n element: any;\r\n canvas: HTMLCanvasElement;\r\n\r\n constructor( value: any[], options: any = {} )\r\n {\r\n let element: any = document.createElement( 'div' );\r\n element.className = 'dial ' + ( options.className ? options.className : '' );\r\n element.style.width = element.style.height = options.size || '100%';\r\n element.style.minWidth = element.style.minHeight = '50px';\r\n\r\n element.bgcolor = options.bgColor || LX.getThemeColor( 'global-background' );\r\n element.pointscolor = options.pointsColor || LX.getThemeColor( 'global-color-accent-light' );\r\n element.linecolor = options.lineColor || '#555';\r\n element.value = value || [];\r\n element.xrange = options.xrange || [ 0, 1 ]; // min, max\r\n element.yrange = options.yrange || [ 0, 1 ]; // min, max\r\n element.defaulty = options.defaulty != null ? options.defaulty : 0.0;\r\n element.no_overlap = options.noOverlap || false;\r\n element.show_samples = options.showSamples || 0;\r\n element.allow_add_values = options.allowAddValues ?? true;\r\n element.draggable_x = options.draggableX ?? true;\r\n element.draggable_y = options.draggableY ?? true;\r\n element.smooth = ( options.smooth && typeof ( options.smooth ) == 'number' ? options.smooth : 0.3 ) || false;\r\n element.move_out = options.moveOutAction ?? LX.CURVE_MOVEOUT_DELETE;\r\n\r\n LX.addSignal( '@on_new_color_scheme', ( el: HTMLElement, value: string ) => {\r\n element.bgcolor = options.bgColor || LX.getThemeColor( 'global-background' );\r\n element.pointscolor = options.pointsColor || LX.getThemeColor( 'global-color-accent-light' );\r\n this.redraw();\r\n } );\r\n\r\n this.element = element;\r\n\r\n let canvas = document.createElement( 'canvas' );\r\n canvas.width = canvas.height = options.size || 200;\r\n element.appendChild( canvas );\r\n this.canvas = canvas;\r\n\r\n element.addEventListener( 'mousedown', onmousedown );\r\n\r\n element.getValueAt = function( x: number )\r\n {\r\n if ( x < element.xrange[0] || x > element.xrange[1] )\r\n {\r\n return element.defaulty;\r\n }\r\n\r\n var last = [ element.xrange[0], element.defaulty ];\r\n var f = 0;\r\n for ( var i = 0; i < element.value.length; i += 1 )\r\n {\r\n var v = element.value[i];\r\n if ( x == v[0] ) return v[1];\r\n if ( x < v[0] )\r\n {\r\n f = ( x - last[0] ) / ( v[0] - last[0] );\r\n return last[1] * ( 1 - f ) + v[1] * f;\r\n }\r\n\r\n last = v;\r\n }\r\n\r\n v = [ element.xrange[1], element.defaulty ];\r\n f = ( x - last[0] ) / ( v[0] - last[0] );\r\n return last[1] * ( 1 - f ) + v[1] * f;\r\n };\r\n\r\n element.resample = function( samples: number )\r\n {\r\n var r = [];\r\n var dx = ( element.xrange[1] - element.xrange[0] ) / samples;\r\n for ( var i = element.xrange[0]; i <= element.xrange[1]; i += dx )\r\n {\r\n r.push( element.getValueAt( i ) );\r\n }\r\n return r;\r\n };\r\n\r\n element.addValue = function( v: number[] )\r\n {\r\n for ( var i = 0; i < element.value; i++ )\r\n {\r\n var value = element.value[i];\r\n if ( value[0] < v[0] ) continue;\r\n element.value.splice( i, 0, v );\r\n this.redraw();\r\n return;\r\n }\r\n\r\n element.value.push( v );\r\n this.redraw();\r\n };\r\n\r\n // Value to canvas\r\n function convert( v: number[] )\r\n {\r\n return [ canvas.width * ( v[0] - element.xrange[0] ) / ( element.xrange[1] ),\r\n canvas.height * ( v[1] - element.yrange[0] ) / ( element.yrange[1] ) ];\r\n }\r\n\r\n // Canvas to value\r\n function unconvert( v: number[] )\r\n {\r\n return [ v[0] * element.xrange[1] / canvas.width + element.xrange[0],\r\n v[1] * element.yrange[1] / canvas.height + element.yrange[0] ];\r\n }\r\n\r\n var selected = -1;\r\n\r\n element.redraw = function( o: any = {} )\r\n {\r\n if ( o.value ) element.value = o.value;\r\n if ( o.xrange ) element.xrange = o.xrange;\r\n if ( o.yrange ) element.yrange = o.yrange;\r\n if ( o.smooth ) element.smooth = o.smooth;\r\n\r\n var ctx: CanvasRenderingContext2D | null = canvas.getContext( '2d' );\r\n if ( !ctx ) return;\r\n\r\n ctx.setTransform( 1, 0, 0, 1, 0, 0 );\r\n ctx.translate( 0, canvas.height );\r\n ctx.scale( 1, -1 );\r\n\r\n ctx.fillStyle = element.bgcolor;\r\n ctx.fillRect( 0, 0, canvas.width, canvas.height );\r\n\r\n ctx.strokeStyle = element.linecolor;\r\n ctx.beginPath();\r\n\r\n // draw line\r\n var pos = convert( [ element.xrange[0], element.defaulty ] );\r\n ctx.moveTo( pos[0], pos[1] );\r\n let values = [ pos[0], pos[1] ];\r\n\r\n for ( var i in element.value )\r\n {\r\n var value: number[] = element.value[i];\r\n pos = convert( value );\r\n values.push( pos[0] );\r\n values.push( pos[1] );\r\n }\r\n\r\n pos = convert( [ element.xrange[1], element.defaulty ] );\r\n values.push( pos[0] );\r\n values.push( pos[1] );\r\n\r\n // Draw points\r\n const center = [ 0, 0 ];\r\n pos = convert( center );\r\n ctx.fillStyle = 'gray';\r\n ctx.beginPath();\r\n ctx.arc( pos[0], pos[1], 3, 0, Math.PI * 2 );\r\n ctx.fill();\r\n\r\n for ( var idx = 0; idx < element.value.length; idx += 1 )\r\n {\r\n var value: number[] = element.value[idx];\r\n pos = convert( value );\r\n const selectedIndex = idx == selected;\r\n if ( selectedIndex )\r\n {\r\n ctx.fillStyle = 'white';\r\n }\r\n else\r\n {\r\n ctx.fillStyle = element.pointscolor;\r\n }\r\n ctx.beginPath();\r\n ctx.arc( pos[0], pos[1], selectedIndex ? 4 : 3, 0, Math.PI * 2 );\r\n ctx.fill();\r\n }\r\n\r\n if ( element.show_samples )\r\n {\r\n var samples = element.resample( element.show_samples );\r\n ctx.fillStyle = '#888';\r\n for ( var idx = 0; idx < samples.length; idx += 1 )\r\n {\r\n var value: number[] = [\r\n idx * ( ( element.xrange[1] - element.xrange[0] ) / element.show_samples ) + element.xrange[0],\r\n samples[idx]\r\n ];\r\n pos = convert( value );\r\n ctx.beginPath();\r\n ctx.arc( pos[0], pos[1], 2, 0, Math.PI * 2 );\r\n ctx.fill();\r\n }\r\n }\r\n };\r\n\r\n var last_mouse = [ 0, 0 ];\r\n\r\n function onmousedown( e: MouseEvent )\r\n {\r\n document.addEventListener( 'mousemove', onmousemove );\r\n document.addEventListener( 'mouseup', onmouseup );\r\n\r\n var rect = canvas.getBoundingClientRect();\r\n var mousex = e.clientX - rect.left;\r\n var mousey = e.clientY - rect.top;\r\n\r\n selected = computeSelected( mousex, canvas.height - mousey );\r\n\r\n if ( e.button == LX.MOUSE_LEFT_CLICK && selected == -1 && element.allow_add_values )\r\n {\r\n var v = unconvert( [ mousex, canvas.height - mousey ] );\r\n element.value.push( v );\r\n sortValues();\r\n selected = element.value.indexOf( v );\r\n }\r\n\r\n last_mouse = [ mousex, mousey ];\r\n element.redraw();\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n\r\n function onmousemove( e: MouseEvent )\r\n {\r\n var rect = canvas.getBoundingClientRect();\r\n var mousex = e.clientX - rect.left;\r\n var mousey = e.clientY - rect.top;\r\n\r\n if ( mousex < 0 ) mousex = 0;\r\n else if ( mousex > canvas.width ) mousex = canvas.width;\r\n if ( mousey < 0 ) mousey = 0;\r\n else if ( mousey > canvas.height ) mousey = canvas.height;\r\n\r\n // Dragging to remove\r\n const currentMouseDiff = [ e.clientX - rect.left, e.clientY - rect.top ];\r\n if ( selected != -1 && distance( currentMouseDiff, [ mousex, mousey ] ) > canvas.height * 0.5 )\r\n {\r\n if ( element.move_out == LX.CURVE_MOVEOUT_DELETE )\r\n {\r\n element.value.splice( selected, 1 );\r\n }\r\n else\r\n {\r\n const d = [ currentMouseDiff[0] - mousex, currentMouseDiff[1] - mousey ];\r\n let value = element.value[selected];\r\n value[0] = ( d[0] == 0.0 ) ? value[0] : ( d[0] < 0.0 ? element.xrange[0] : element.xrange[1] );\r\n value[1] = ( d[1] == 0.0 ) ? value[1] : ( d[1] < 0.0 ? element.yrange[1] : element.yrange[0] );\r\n }\r\n\r\n onmouseup( e );\r\n return;\r\n }\r\n\r\n var dx = element.draggable_x ? last_mouse[0] - mousex : 0;\r\n var dy = element.draggable_y ? last_mouse[1] - mousey : 0;\r\n var delta = unconvert( [ -dx, dy ] );\r\n\r\n if ( selected != -1 )\r\n {\r\n var minx = element.xrange[0];\r\n var maxx = element.xrange[1];\r\n\r\n if ( element.no_overlap )\r\n {\r\n if ( selected > 0 ) minx = element.value[selected - 1][0];\r\n if ( selected < ( element.value.length - 1 ) ) maxx = element.value[selected + 1][0];\r\n }\r\n\r\n var v = element.value[selected];\r\n v[0] += delta[0];\r\n v[1] += delta[1];\r\n if ( v[0] < minx ) v[0] = minx;\r\n else if ( v[0] > maxx ) v[0] = maxx;\r\n if ( v[1] < element.yrange[0] ) v[1] = element.yrange[0];\r\n else if ( v[1] > element.yrange[1] ) v[1] = element.yrange[1];\r\n }\r\n\r\n sortValues();\r\n element.redraw();\r\n last_mouse[0] = mousex;\r\n last_mouse[1] = mousey;\r\n onchange( e );\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n\r\n function onmouseup( e: MouseEvent )\r\n {\r\n selected = -1;\r\n element.redraw();\r\n document.removeEventListener( 'mousemove', onmousemove );\r\n document.removeEventListener( 'mouseup', onmouseup );\r\n onchange( e );\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n\r\n function onchange( e: MouseEvent )\r\n {\r\n if ( options.callback )\r\n {\r\n options.callback.call( element, element.value, e );\r\n }\r\n }\r\n\r\n function distance( a: number[], b: number[] )\r\n {\r\n return Math.sqrt( Math.pow( b[0] - a[0], 2 ) + Math.pow( b[1] - a[1], 2 ) );\r\n }\r\n\r\n function computeSelected( x: number, y: number )\r\n {\r\n var minDistance = 100000;\r\n var maxDistance = 8; // pixels\r\n var selected = -1;\r\n for ( var i = 0; i < element.value.length; i++ )\r\n {\r\n var value = element.value[i];\r\n var pos = convert( value );\r\n var dist = distance( [ x, y ], pos );\r\n if ( dist < minDistance && dist < maxDistance )\r\n {\r\n minDistance = dist;\r\n selected = i;\r\n }\r\n }\r\n return selected;\r\n }\r\n\r\n function sortValues()\r\n {\r\n var v = null;\r\n if ( selected != -1 )\r\n {\r\n v = element.value[selected];\r\n }\r\n element.value.sort( function( a: number[], b: number[] )\r\n {\r\n return a[0] - b[0];\r\n } );\r\n if ( v )\r\n {\r\n selected = element.value.indexOf( v );\r\n }\r\n }\r\n\r\n element.redraw();\r\n return this;\r\n }\r\n\r\n redraw( options: any = {} )\r\n {\r\n this.element.redraw( options );\r\n }\r\n}\r\n\r\nLX.CanvasDial = CanvasDial;\r\n\r\nexport { CanvasDial };\r\n","// Dial.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\nimport { CanvasDial } from './CanvasDial';\r\n\r\n/**\r\n * @class Dial\r\n * @description Dial Component\r\n */\r\n\r\nexport class Dial extends BaseComponent\r\n{\r\n dialInstance: CanvasDial;\r\n\r\n constructor( name: string, values: any[], callback: any, options: any = {} )\r\n {\r\n let defaultValues = JSON.parse( JSON.stringify( values ) );\r\n\r\n super( ComponentType.DIAL, name, defaultValues, options );\r\n\r\n this.onGetValue = () => {\r\n return JSON.parse( JSON.stringify( dialInstance.element.value ) );\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n dialInstance.element.value = JSON.parse( JSON.stringify( newValue ) );\r\n dialInstance.redraw();\r\n if ( !skipCallback )\r\n {\r\n this._trigger( new IEvent( name, dialInstance.element.value, event ), callback );\r\n }\r\n };\r\n\r\n this.onResize = ( rect ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n container.style.width = `calc( 100% - ${realNameWidth})`;\r\n LX.flushCss( container );\r\n dialInstance.element.style.height = dialInstance.element.offsetWidth + 'px';\r\n dialInstance.canvas.width = dialInstance.element.offsetWidth;\r\n container.style.width = dialInstance.element.offsetWidth + 'px';\r\n dialInstance.canvas.height = dialInstance.canvas.width;\r\n dialInstance.redraw();\r\n };\r\n\r\n var container = document.createElement( 'div' );\r\n container.className = 'lexcurve';\r\n this.root.appendChild( container );\r\n\r\n options.callback = ( v: any, e: MouseEvent ) => {\r\n this._trigger( new IEvent( name, v, e ), callback );\r\n };\r\n\r\n options.name = name;\r\n\r\n let dialInstance = new CanvasDial( values, options );\r\n container.appendChild( dialInstance.element );\r\n this.dialInstance = dialInstance;\r\n\r\n LX.doAsync( this.onResize.bind( this ) );\r\n }\r\n}\r\n\r\nLX.CanvasDial = CanvasDial;\r\nLX.Dial = Dial;\r\n","// FileInput.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\nimport { Panel } from '../core/Panel';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\nimport { Button } from './Button';\r\n\r\n/**\r\n * @class FileInput\r\n * @description FileInput Component\r\n */\r\n\r\nexport class FileInput extends BaseComponent\r\n{\r\n constructor( name: string, callback: any, options: any = {} )\r\n {\r\n super( ComponentType.FILE, name, null, options );\r\n\r\n let local = options.local ?? true;\r\n let type = options.type ?? 'text';\r\n let read = options.read ?? true;\r\n\r\n this.onResize = ( rect ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n input.style.width = `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n // Create hidden input\r\n let input = document.createElement( 'input' );\r\n input.className = 'lexfileinput';\r\n input.type = 'file';\r\n input.disabled = options.disabled ?? false;\r\n this.root.appendChild( input );\r\n\r\n if ( options.placeholder )\r\n {\r\n input.placeholder = options.placeholder;\r\n }\r\n\r\n input.addEventListener( 'change', function( e: any )\r\n {\r\n const files = e.target.files;\r\n if ( !files.length ) return;\r\n if ( read )\r\n {\r\n if ( options.onBeforeRead )\r\n {\r\n options.onBeforeRead();\r\n }\r\n\r\n const reader = new FileReader();\r\n\r\n if ( type === 'text' ) reader.readAsText( files[0] );\r\n else if ( type === 'buffer' ) reader.readAsArrayBuffer( files[0] );\r\n else if ( type === 'bin' ) reader.readAsBinaryString( files[0] );\r\n else if ( type === 'url' ) reader.readAsDataURL( files[0] );\r\n\r\n reader.onload = ( e ) => {\r\n callback.call( this, e.target?.result, files[0] );\r\n };\r\n }\r\n else\r\n {\r\n callback( files[0] );\r\n }\r\n } );\r\n\r\n input.addEventListener( 'cancel', function( e )\r\n {\r\n callback( null );\r\n } );\r\n\r\n if ( local )\r\n {\r\n let settingsDialog: any = null;\r\n\r\n const settingButton = new Button( null, '', () => {\r\n if ( settingsDialog )\r\n {\r\n return;\r\n }\r\n\r\n settingsDialog = new LX.Dialog( 'Load Settings', ( p: Panel ) => {\r\n p.addSelect( 'Type', [ 'text', 'buffer', 'bin', 'url' ], type, ( v: any ) => {\r\n type = v;\r\n } );\r\n p.addButton( null, 'Reload', () => {\r\n input.dispatchEvent( new Event( 'change' ) );\r\n } );\r\n }, { onclose: ( root: HTMLElement ) => {\r\n root.remove();\r\n settingsDialog = null;\r\n } } );\r\n }, { skipInlineCount: true, title: 'Settings', disabled: options.disabled, icon: 'Settings' } );\r\n\r\n this.root.appendChild( settingButton.root );\r\n }\r\n\r\n LX.doAsync( this.onResize.bind( this ) );\r\n }\r\n}\r\n\r\nLX.FileInput = FileInput;\r\n","// Form.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\nimport { Button } from './Button';\r\nimport { TextInput } from './TextInput';\r\n\r\n/**\r\n * @class Form\r\n * @description Form Component\r\n */\r\n\r\nexport class Form extends BaseComponent\r\n{\r\n constructor( name: string, data: any, callback: any, options: any = {} )\r\n {\r\n if ( data.constructor != Object )\r\n {\r\n console.error( 'Form data must be an Object' );\r\n return;\r\n }\r\n\r\n // Always hide name for this one\r\n options.hideName = true;\r\n\r\n super( ComponentType.FORM, name, null, options );\r\n\r\n this.onGetValue = () => {\r\n return container.formData;\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n container.formData = newValue;\r\n const entries = container.querySelectorAll( '.lexcomponent' );\r\n for ( let i = 0; i < entries.length; ++i )\r\n {\r\n const entry = entries[i];\r\n if ( entry.jsInstance.type != ComponentType.TEXT )\r\n {\r\n continue;\r\n }\r\n let entryName = entries[i].querySelector( '.lexcomponentname' ).innerText;\r\n let entryInput = entries[i].querySelector( '.lextext input' );\r\n entryInput.value = newValue[entryName] ?? '';\r\n BaseComponent._dispatchEvent( entryInput, 'focusout', skipCallback );\r\n }\r\n };\r\n\r\n let container: any = document.createElement( 'div' );\r\n container.className = 'lexformdata';\r\n container.style.width = '100%';\r\n container.formData = {};\r\n this.root.appendChild( container );\r\n\r\n for ( let entry in data )\r\n {\r\n let entryData = data[entry];\r\n\r\n if ( entryData.constructor != Object )\r\n {\r\n const oldValue = LX.deepCopy( entryData );\r\n entryData = { value: oldValue };\r\n data[entry] = entryData;\r\n }\r\n\r\n entryData.width = '100%';\r\n entryData.placeholder = entryData.placeholder ?? ( entryData.label ?? `Enter ${entry}` );\r\n entryData.ignoreValidation = true;\r\n\r\n if ( !( options.skipLabels ?? false ) )\r\n {\r\n const label = new TextInput( null, entryData.label ?? entry, null, { disabled: true,\r\n inputClass: 'formlabel bg-none' } );\r\n container.appendChild( label.root );\r\n }\r\n\r\n entryData.textComponent = new TextInput( null,\r\n entryData.constructor == Object ? entryData.value : entryData, ( value: string, event: any ) => {\r\n container.formData[entry] = value;\r\n if ( entryData.submit && event.constructor === KeyboardEvent )\r\n {\r\n primaryButton?.click();\r\n }\r\n }, entryData );\r\n container.appendChild( entryData.textComponent.root );\r\n\r\n container.formData[entry] = entryData.constructor == Object ? entryData.value : entryData;\r\n }\r\n\r\n const buttonContainer = LX.makeContainer( [ '100%', 'auto' ], 'flex flex-row mt-2', '', container );\r\n\r\n if ( options.secondaryActionName || options.secondaryActionCallback )\r\n {\r\n const secondaryButton = new Button( null, options.secondaryActionName ?? 'Cancel',\r\n ( value: any, event: MouseEvent ) => {\r\n if ( options.secondaryActionCallback )\r\n {\r\n options.secondaryActionCallback( container.formData, event );\r\n }\r\n }, { width: '100%', minWidth: '0', buttonClass: options.secondaryButtonClass ?? 'primary' } );\r\n\r\n buttonContainer.appendChild( secondaryButton.root );\r\n }\r\n\r\n const primaryButton = new Button( null, options.primaryActionName ?? 'Submit',\r\n ( value: any, event: MouseEvent ) => {\r\n const errors = [];\r\n\r\n for ( let entry in data )\r\n {\r\n let entryData = data[entry];\r\n\r\n const pattern = entryData.pattern;\r\n const matchField = pattern?.fieldMatchName ? container.formData[pattern.fieldMatchName] : undefined;\r\n\r\n if ( !entryData.textComponent.valid( undefined, matchField ) )\r\n {\r\n const err = { entry, type: 'input_not_valid', messages: [] };\r\n if ( pattern )\r\n {\r\n err.messages = LX.validateValueAtPattern(\r\n container.formData[entry],\r\n pattern,\r\n matchField\r\n );\r\n }\r\n\r\n errors.push( err );\r\n }\r\n }\r\n\r\n if ( callback )\r\n {\r\n callback( container.formData, errors, event );\r\n }\r\n }, { width: '100%', minWidth: '0', buttonClass: options.primaryButtonClass ?? 'contrast' } );\r\n\r\n buttonContainer.appendChild( primaryButton.root );\r\n }\r\n}\r\n\r\nLX.Form = Form;\r\n","// Layers.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\n\r\n/**\r\n * @class Layers\r\n * @description Layers Component\r\n */\r\n\r\nexport class Layers extends BaseComponent\r\n{\r\n setLayers: ( val: number ) => void;\r\n\r\n constructor( name: string, value: number, callback: any, options: any = {} )\r\n {\r\n super( ComponentType.LAYERS, name, value, options );\r\n\r\n this.onGetValue = () => {\r\n return value;\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n value = newValue;\r\n this.setLayers( value );\r\n if ( !skipCallback )\r\n {\r\n this._trigger( new IEvent( name, value, event ), callback );\r\n }\r\n };\r\n\r\n this.onResize = ( rect ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n container.style.width = `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n const container = document.createElement( 'div' );\r\n container.className = 'lexlayers';\r\n this.root.appendChild( container );\r\n\r\n const maxBits = options.maxBits ?? 16;\r\n\r\n this.setLayers = ( val ) => {\r\n container.innerHTML = '';\r\n\r\n let binary = val.toString( 2 );\r\n let nbits = binary.length;\r\n\r\n // fill zeros\r\n for ( let i = 0; i < ( maxBits - nbits ); ++i )\r\n {\r\n binary = '0' + binary;\r\n }\r\n\r\n for ( let bit = 0; bit < maxBits; ++bit )\r\n {\r\n let layer: any = document.createElement( 'div' );\r\n layer.className = 'lexlayer';\r\n\r\n if ( val != undefined )\r\n {\r\n const valueBit = binary[maxBits - bit - 1];\r\n if ( valueBit != undefined && valueBit == '1' )\r\n {\r\n layer.classList.add( 'selected' );\r\n }\r\n }\r\n\r\n layer.innerText = bit + 1;\r\n layer.title = 'Bit ' + bit + ', value ' + ( 1 << bit );\r\n container.appendChild( layer );\r\n\r\n layer.addEventListener( 'click', ( e: any ) => {\r\n e.stopPropagation();\r\n e.stopImmediatePropagation();\r\n e.target.classList.toggle( 'selected' );\r\n const newValue = val ^ ( 1 << bit );\r\n this.set( newValue, false, e );\r\n } );\r\n }\r\n };\r\n\r\n this.setLayers( value );\r\n\r\n LX.doAsync( this.onResize.bind( this ) );\r\n }\r\n}\r\n\r\nLX.Layers = Layers;\r\n","// List.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\n\r\n/**\r\n * @class List\r\n * @description List Component\r\n */\r\n\r\nexport class List extends BaseComponent\r\n{\r\n _updateValues: ( newValues: any[] ) => void;\r\n\r\n constructor( name: string, values: any[], value: any, callback: any, options: any = {} )\r\n {\r\n super( ComponentType.LIST, name, value, options );\r\n\r\n this.onGetValue = () => {\r\n return value;\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n listContainer.querySelectorAll( '.lexlistitem' ).forEach( ( e ) => e.classList.remove( 'selected' ) );\r\n\r\n let idx = null;\r\n for ( let i = 0; i < values.length; ++i )\r\n {\r\n const v = values[i];\r\n if ( v == newValue || ( ( v.constructor == Array ) && ( v[0] == newValue ) ) )\r\n {\r\n idx = i;\r\n break;\r\n }\r\n }\r\n\r\n if ( !idx )\r\n {\r\n console.error( `Cannot find item ${newValue} in List.` );\r\n return;\r\n }\r\n\r\n listContainer.children[idx].classList.toggle( 'selected' );\r\n value = newValue;\r\n\r\n if ( !skipCallback )\r\n {\r\n this._trigger( new IEvent( name, newValue, event ), callback );\r\n }\r\n };\r\n\r\n this.onResize = ( rect ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n listContainer.style.width = `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n this._updateValues = ( newValues ) => {\r\n values = newValues;\r\n listContainer.innerHTML = '';\r\n\r\n for ( let i = 0; i < values.length; ++i )\r\n {\r\n let icon = null;\r\n let itemValue = values[i];\r\n\r\n if ( itemValue.constructor === Array )\r\n {\r\n icon = itemValue[1];\r\n itemValue = itemValue[0];\r\n }\r\n\r\n let listElement = document.createElement( 'div' );\r\n listElement.className = 'lexlistitem' + ( value == itemValue ? ' selected' : '' );\r\n\r\n if ( icon )\r\n {\r\n listElement.appendChild( LX.makeIcon( icon ) );\r\n }\r\n\r\n listElement.innerHTML += `<span>${itemValue}</span>`;\r\n\r\n listElement.addEventListener( 'click', ( e ) => {\r\n listContainer.querySelectorAll( '.lexlistitem' ).forEach( ( e ) =>\r\n e.classList.remove( 'selected' )\r\n );\r\n listElement.classList.toggle( 'selected' );\r\n value = itemValue;\r\n this._trigger( new IEvent( name, itemValue, e ), callback );\r\n } );\r\n\r\n listContainer.appendChild( listElement );\r\n }\r\n };\r\n\r\n // Show list\r\n\r\n let listContainer = document.createElement( 'div' );\r\n listContainer.className = 'lexlist';\r\n this.root.appendChild( listContainer );\r\n\r\n this._updateValues( values );\r\n\r\n LX.doAsync( this.onResize.bind( this ) );\r\n }\r\n}\r\n\r\nLX.List = List;\r\n","// Vec2.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\n\r\nexport class vec2\r\n{\r\n x: number;\r\n y: number;\r\n\r\n constructor( x?: number, y?: number )\r\n {\r\n this.x = x ?? 0;\r\n this.y = y ?? ( x ?? 0 );\r\n }\r\n\r\n get xy()\r\n {\r\n return [ this.x, this.y ];\r\n }\r\n get yx()\r\n {\r\n return [ this.y, this.x ];\r\n }\r\n\r\n set( x: number, y: number )\r\n {\r\n this.x = x;\r\n this.y = y;\r\n }\r\n add( v: vec2, v0 = new vec2() )\r\n {\r\n v0.set( this.x + v.x, this.y + v.y );\r\n return v0;\r\n }\r\n sub( v: vec2, v0 = new vec2() )\r\n {\r\n v0.set( this.x - v.x, this.y - v.y );\r\n return v0;\r\n }\r\n mul( v: number | vec2, v0 = new vec2() )\r\n {\r\n if ( v.constructor == Number ) v = new vec2( v );\r\n v0.set( this.x * ( v as vec2 ).x, this.y * ( v as vec2 ).y );\r\n return v0;\r\n }\r\n div( v: vec2, v0 = new vec2() )\r\n {\r\n if ( v.constructor == Number ) v = new vec2( v );\r\n v0.set( this.x / v.x, this.y / v.y );\r\n return v0;\r\n }\r\n abs( v0 = new vec2() )\r\n {\r\n v0.set( Math.abs( this.x ), Math.abs( this.y ) );\r\n return v0;\r\n }\r\n dot( v: vec2 )\r\n {\r\n return this.x * v.x + this.y * v.y;\r\n }\r\n len2()\r\n {\r\n return this.dot( this );\r\n }\r\n len()\r\n {\r\n return Math.sqrt( this.len2() );\r\n }\r\n nrm( v0 = new vec2() )\r\n {\r\n v0.set( this.x, this.y );\r\n return v0.mul( 1.0 / this.len(), v0 );\r\n }\r\n dst( v: vec2 )\r\n {\r\n return v.sub( this ).len();\r\n }\r\n clp( min: number, max: number, v0 = new vec2() )\r\n {\r\n v0.set( LX.clamp( this.x, min, max ), LX.clamp( this.y, min, max ) );\r\n return v0;\r\n }\r\n\r\n fromArray( array: number[] )\r\n {\r\n this.x = array[0];\r\n this.y = array[1];\r\n }\r\n toArray()\r\n {\r\n return this.xy;\r\n }\r\n}\r\n\r\nLX.vec2 = vec2;\r\n","// CanvasMap2D.js @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\nimport { vec2 } from './../core/Vec2';\r\n\r\n// Based on LGraphMap2D from @tamats (jagenjo)\r\n// https://github.com/jagenjo/litescene.js\r\nexport class CanvasMap2D\r\n{\r\n static COLORS = [ [ 255, 0, 0 ], [ 0, 255, 0 ], [ 0, 0, 255 ], [ 0, 128, 128 ], [ 128, 0, 128 ], [ 128, 128, 0 ], [\r\n 255,\r\n 128,\r\n 0\r\n ], [ 255, 0, 128 ], [ 0, 128, 255 ], [ 128, 0, 255 ] ];\r\n static GRID_SIZE = 64;\r\n\r\n /**\r\n * @constructor Map2D\r\n * @param {Array} initialPoints\r\n * @param {Function} callback\r\n * @param {Object} options\r\n * circular\r\n * showNames\r\n * size\r\n */\r\n\r\n canvas: HTMLCanvasElement;\r\n imageCanvas: HTMLCanvasElement | null = null;\r\n root: any;\r\n circular: boolean;\r\n showNames: boolean;\r\n size: number[];\r\n points: any[];\r\n callback: any;\r\n weights: number[] = [];\r\n weightsObj: any = {};\r\n currentPosition: vec2 = new vec2( 0.0, 0.0 );\r\n circleCenter: number[] = [ 0, 0 ];\r\n circleRadius: number = 1;\r\n margin: number = 8;\r\n dragging: boolean = false;\r\n\r\n _valuesChanged: boolean = true;\r\n _selectedPoint: any = null;\r\n _precomputedWeightsGridSize: number = 0;\r\n _precomputedWeights: Float32Array | null = null;\r\n\r\n constructor( initialPoints: any, callback: any, options: any = {} )\r\n {\r\n this.circular = options.circular ?? false;\r\n this.showNames = options.showNames ?? true;\r\n this.size = options.size ?? [ 200, 200 ];\r\n\r\n this.points = initialPoints ?? [];\r\n this.callback = callback;\r\n\r\n this._valuesChanged = true;\r\n this._selectedPoint = null;\r\n\r\n this.root = LX.makeContainer( [ 'auto', 'auto' ] );\r\n this.root.tabIndex = '1';\r\n\r\n this.root.addEventListener( 'mousedown', innerMouseDown );\r\n\r\n const that = this;\r\n\r\n function innerMouseDown( e: MouseEvent )\r\n {\r\n var doc = that.root.ownerDocument;\r\n doc.addEventListener( 'mouseup', innerMouseUp );\r\n doc.addEventListener( 'mousemove', innerMouseMove );\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n that.dragging = true;\r\n return true;\r\n }\r\n\r\n function innerMouseMove( e: MouseEvent )\r\n {\r\n if ( !that.dragging )\r\n {\r\n return;\r\n }\r\n\r\n const margin = that.margin;\r\n const rect = that.root.getBoundingClientRect();\r\n\r\n let pos = new vec2();\r\n pos.set( e.x - rect.x - that.size[0] * 0.5, e.y - rect.y - that.size[1] * 0.5 );\r\n var cpos = that.currentPosition;\r\n cpos.set(\r\n LX.clamp( pos.x / ( that.size[0] * 0.5 - margin ), -1, 1 ),\r\n LX.clamp( pos.y / ( that.size[1] * 0.5 - margin ), -1, 1 )\r\n );\r\n\r\n if ( that.circular )\r\n {\r\n const center = new vec2( 0, 0 );\r\n const dist = cpos.dst( center );\r\n if ( dist > 1 )\r\n {\r\n cpos = cpos.nrm();\r\n }\r\n }\r\n\r\n that.renderToCanvas( that.canvas.getContext( '2d', { willReadFrequently: true } ) );\r\n\r\n that.computeWeights( cpos );\r\n\r\n if ( that.callback )\r\n {\r\n that.callback( that.weightsObj, that.weights, cpos );\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function innerMouseUp( e: MouseEvent )\r\n {\r\n that.dragging = false;\r\n\r\n var doc = that.root.ownerDocument;\r\n doc.removeEventListener( 'mouseup', innerMouseUp );\r\n doc.removeEventListener( 'mousemove', innerMouseMove );\r\n }\r\n\r\n this.canvas = document.createElement( 'canvas' );\r\n this.canvas.width = this.size[0];\r\n this.canvas.height = this.size[1];\r\n this.root.appendChild( this.canvas );\r\n\r\n const ctx = this.canvas.getContext( '2d', { willReadFrequently: true } );\r\n this.renderToCanvas( ctx );\r\n }\r\n\r\n /**\r\n * @method computeWeights\r\n * @param {vec2} p\r\n * @description Iterate for every cell to see if our point is nearer to the cell than the nearest point of the cell,\r\n * If that is the case we increase the weight of the nearest point. At the end we normalize the weights of the points by the number of near points\r\n * and that give us the weight for every point\r\n */\r\n\r\n computeWeights( p: vec2 )\r\n {\r\n if ( !this.points.length )\r\n {\r\n return;\r\n }\r\n\r\n let values = this._precomputedWeights;\r\n if ( !values || this._valuesChanged )\r\n {\r\n values = this.precomputeWeights();\r\n }\r\n\r\n let weights = this.weights;\r\n weights.length = this.points.length;\r\n for ( var i = 0; i < weights.length; ++i )\r\n {\r\n weights[i] = 0;\r\n }\r\n\r\n const gridSize = CanvasMap2D.GRID_SIZE;\r\n\r\n let totalInside = 0;\r\n let pos2 = new vec2();\r\n\r\n for ( var y = 0; y < gridSize; ++y )\r\n {\r\n for ( var x = 0; x < gridSize; ++x )\r\n {\r\n pos2.set( ( x / gridSize ) * 2 - 1, ( y / gridSize ) * 2 - 1 );\r\n\r\n var dataPos = x * 2 + y * gridSize * 2;\r\n var pointIdx = values[dataPos];\r\n\r\n var isInside = p.dst( pos2 ) < ( values[dataPos + 1] + 0.001 ); // epsilon\r\n if ( isInside )\r\n {\r\n weights[pointIdx] += 1;\r\n totalInside++;\r\n }\r\n }\r\n }\r\n\r\n for ( var i = 0; i < weights.length; ++i )\r\n {\r\n weights[i] /= totalInside;\r\n this.weightsObj[this.points[i].name] = weights[i];\r\n }\r\n\r\n return weights;\r\n }\r\n\r\n /**\r\n * @method precomputeWeights\r\n * @description Precompute for every cell, which is the closest point of the points set and how far it is from the center of the cell\r\n * We store point index and distance in this._precomputedWeights. This is done only when the points set change\r\n */\r\n\r\n precomputeWeights()\r\n {\r\n this._valuesChanged = false;\r\n\r\n const numPoints = this.points.length;\r\n const gridSize = CanvasMap2D.GRID_SIZE;\r\n const totalNums = 2 * gridSize * gridSize;\r\n\r\n let position = new vec2();\r\n\r\n if ( !this._precomputedWeights || this._precomputedWeights.length != totalNums )\r\n {\r\n this._precomputedWeights = new Float32Array( totalNums );\r\n }\r\n\r\n let values = this._precomputedWeights;\r\n this._precomputedWeightsGridSize = gridSize;\r\n\r\n for ( let y = 0; y < gridSize; ++y )\r\n {\r\n for ( let x = 0; x < gridSize; ++x )\r\n {\r\n let nearest = -1;\r\n let minDistance = 100000;\r\n\r\n for ( let i = 0; i < numPoints; ++i )\r\n {\r\n position.set( ( x / gridSize ) * 2 - 1, ( y / gridSize ) * 2 - 1 );\r\n\r\n let pointPosition = new vec2();\r\n pointPosition.fromArray( this.points[i].pos );\r\n let dist = position.dst( pointPosition );\r\n if ( dist > minDistance )\r\n {\r\n continue;\r\n }\r\n\r\n nearest = i;\r\n minDistance = dist;\r\n }\r\n\r\n values[x * 2 + y * 2 * gridSize] = nearest;\r\n values[x * 2 + y * 2 * gridSize + 1] = minDistance;\r\n }\r\n }\r\n\r\n return values;\r\n }\r\n\r\n /**\r\n * @method precomputeWeightsToImage\r\n * @param {vec2} p\r\n */\r\n\r\n precomputeWeightsToImage( p: vec2 )\r\n {\r\n if ( !this.points.length )\r\n {\r\n return null;\r\n }\r\n\r\n const gridSize = CanvasMap2D.GRID_SIZE;\r\n var values = this._precomputedWeights;\r\n if ( !values || this._valuesChanged || this._precomputedWeightsGridSize != gridSize )\r\n {\r\n values = this.precomputeWeights();\r\n }\r\n\r\n var canvas = this.imageCanvas;\r\n if ( !canvas )\r\n {\r\n canvas = this.imageCanvas = document.createElement( 'canvas' );\r\n }\r\n\r\n canvas.width = canvas.height = gridSize;\r\n var ctx = canvas.getContext( '2d', { willReadFrequently: true } );\r\n if ( !ctx )\r\n {\r\n return;\r\n }\r\n\r\n var weights = this.weights;\r\n weights.length = this.points.length;\r\n for ( var i = 0; i < weights.length; ++i )\r\n {\r\n weights[i] = 0;\r\n }\r\n\r\n let totalInside = 0;\r\n let pixels = ctx.getImageData( 0, 0, gridSize, gridSize );\r\n let pos2 = new vec2();\r\n\r\n for ( var y = 0; y < gridSize; ++y )\r\n {\r\n for ( var x = 0; x < gridSize; ++x )\r\n {\r\n pos2.set( ( x / gridSize ) * 2 - 1, ( y / gridSize ) * 2 - 1 );\r\n\r\n const pixelPos = x * 4 + y * gridSize * 4;\r\n const dataPos = x * 2 + y * gridSize * 2;\r\n const pointIdx = values[dataPos];\r\n const c = CanvasMap2D.COLORS[pointIdx % CanvasMap2D.COLORS.length];\r\n\r\n var isInside = p.dst( pos2 ) < ( values[dataPos + 1] + 0.001 );\r\n if ( isInside )\r\n {\r\n weights[pointIdx] += 1;\r\n totalInside++;\r\n }\r\n\r\n pixels.data[pixelPos] = c[0] + ( isInside ? 128 : 0 );\r\n pixels.data[pixelPos + 1] = c[1] + ( isInside ? 128 : 0 );\r\n pixels.data[pixelPos + 2] = c[2] + ( isInside ? 128 : 0 );\r\n pixels.data[pixelPos + 3] = 255;\r\n }\r\n }\r\n\r\n for ( let i = 0; i < weights.length; ++i )\r\n {\r\n weights[i] /= totalInside;\r\n }\r\n\r\n ctx.putImageData( pixels, 0, 0 );\r\n return canvas;\r\n }\r\n\r\n addPoint( name: string, pos: number[] | null = null )\r\n {\r\n if ( this.findPoint( name ) )\r\n {\r\n console.warn( 'CanvasMap2D.addPoint: There is already a point with that name' );\r\n return;\r\n }\r\n\r\n if ( !pos )\r\n {\r\n pos = [ this.currentPosition.x, this.currentPosition.y ];\r\n }\r\n\r\n pos[0] = LX.clamp( pos[0], -1, 1 );\r\n pos[1] = LX.clamp( pos[1], -1, 1 );\r\n\r\n const point = { name, pos };\r\n this.points.push( point );\r\n this._valuesChanged = true;\r\n return point;\r\n }\r\n\r\n removePoint( name: string )\r\n {\r\n const removeIdx = this.points.findIndex( ( p ) => p.name == name );\r\n if ( removeIdx > -1 )\r\n {\r\n this.points.splice( removeIdx, 1 );\r\n this._valuesChanged = true;\r\n }\r\n }\r\n\r\n findPoint( name: string )\r\n {\r\n return this.points.find( ( p ) => p.name == name );\r\n }\r\n\r\n clear()\r\n {\r\n this.points.length = 0;\r\n this._precomputedWeights = null;\r\n this._selectedPoint = null;\r\n }\r\n\r\n renderToCanvas( ctx: CanvasRenderingContext2D | null )\r\n {\r\n if ( !ctx )\r\n {\r\n return;\r\n }\r\n\r\n const margin = this.margin;\r\n const w = this.size[0];\r\n const h = this.size[1];\r\n\r\n ctx.fillStyle = 'black';\r\n ctx.strokeStyle = '#BBB';\r\n\r\n ctx.clearRect( 0, 0, w, h );\r\n\r\n if ( this.circular )\r\n {\r\n this.circleCenter[0] = w * 0.5;\r\n this.circleCenter[1] = h * 0.5;\r\n this.circleRadius = h * 0.5 - margin;\r\n\r\n ctx.lineWidth = 1;\r\n ctx.beginPath();\r\n ctx.arc( this.circleCenter[0], this.circleCenter[1], this.circleRadius, 0, Math.PI * 2 );\r\n ctx.fill();\r\n ctx.stroke();\r\n ctx.beginPath();\r\n ctx.moveTo( this.circleCenter[0] + 0.5, this.circleCenter[1] - this.circleRadius );\r\n ctx.lineTo( this.circleCenter[0] + 0.5, this.circleCenter[1] + this.circleRadius );\r\n ctx.moveTo( this.circleCenter[0] - this.circleRadius, this.circleCenter[1] );\r\n ctx.lineTo( this.circleCenter[0] + this.circleRadius, this.circleCenter[1] );\r\n ctx.stroke();\r\n }\r\n else\r\n {\r\n ctx.fillRect( margin, margin, w - margin * 2, h - margin * 2 );\r\n ctx.strokeRect( margin, margin, w - margin * 2, h - margin * 2 );\r\n }\r\n\r\n var image = this.precomputeWeightsToImage( this.currentPosition );\r\n if ( image )\r\n {\r\n ctx.globalAlpha = 0.5;\r\n ctx.imageSmoothingEnabled = false;\r\n if ( this.circular )\r\n {\r\n ctx.save();\r\n ctx.beginPath();\r\n ctx.arc( this.circleCenter[0], this.circleCenter[1], this.circleRadius, 0, Math.PI * 2 );\r\n ctx.clip();\r\n ctx.drawImage( image, this.circleCenter[0] - this.circleRadius,\r\n this.circleCenter[1] - this.circleRadius, this.circleRadius * 2, this.circleRadius * 2 );\r\n ctx.restore();\r\n }\r\n else\r\n {\r\n ctx.drawImage( image, margin, margin, w - margin * 2, h - margin * 2 );\r\n }\r\n ctx.imageSmoothingEnabled = true;\r\n ctx.globalAlpha = 1;\r\n }\r\n\r\n for ( let i = 0; i < this.points.length; ++i )\r\n {\r\n const point = this.points[i];\r\n let x = point.pos[0] * 0.5 + 0.5;\r\n let y = point.pos[1] * 0.5 + 0.5;\r\n x = x * ( w - margin * 2 ) + margin;\r\n y = y * ( h - margin * 2 ) + margin;\r\n x = LX.clamp( x, margin, w - margin );\r\n y = LX.clamp( y, margin, h - margin );\r\n ctx.fillStyle = ( point == this._selectedPoint ) ? '#CDF' : '#BCD';\r\n ctx.beginPath();\r\n ctx.arc( x, y, 3, 0, Math.PI * 2 );\r\n ctx.fill();\r\n if ( this.showNames )\r\n {\r\n ctx.fillText( point.name, x + 5, y + 5 );\r\n }\r\n }\r\n\r\n ctx.fillStyle = 'white';\r\n ctx.beginPath();\r\n var x = this.currentPosition.x * 0.5 + 0.5;\r\n var y = this.currentPosition.y * 0.5 + 0.5;\r\n x = x * ( w - margin * 2 ) + margin;\r\n y = y * ( h - margin * 2 ) + margin;\r\n x = LX.clamp( x, margin, w - margin );\r\n y = LX.clamp( y, margin, h - margin );\r\n ctx.arc( x, y, 4, 0, Math.PI * 2 );\r\n ctx.fill();\r\n }\r\n}\r\n\r\nLX.CanvasMap2D = CanvasMap2D;\r\n","// Map2D.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\nimport { Button } from './Button';\r\nimport { CanvasMap2D } from './CanvasMap2D';\r\nimport { Popover } from './Popover';\r\n\r\n/**\r\n * @class Map2D\r\n * @description Map2D Component\r\n */\r\n\r\nexport class Map2D extends BaseComponent\r\n{\r\n map2d: CanvasMap2D;\r\n _popover: Popover | null = null;\r\n\r\n constructor( name: string, points: any[], callback: any, options: any = {} )\r\n {\r\n super( ComponentType.MAP2D, name, null, options );\r\n\r\n this.onGetValue = () => {\r\n return this.map2d.weightsObj;\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n // if( !skipCallback )\r\n // {\r\n // this._trigger( new IEvent( name, curveInstance.element.value, event ), callback );\r\n // }\r\n };\r\n\r\n this.onResize = ( rect ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n container.style.width = `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n var container = document.createElement( 'div' );\r\n container.className = 'lexmap2d';\r\n this.root.appendChild( container );\r\n\r\n this.map2d = new CanvasMap2D( points, callback, options );\r\n\r\n const calendarIcon = LX.makeIcon( 'SquareMousePointer' );\r\n const calendarButton = new Button( null, 'Open Map', () => {\r\n this._popover = new Popover( calendarButton.root, [ this.map2d ] );\r\n }, { buttonClass: `flex flex-row px-3 fg-secondary justify-between` } );\r\n\r\n calendarButton.root.querySelector( 'button' ).appendChild( calendarIcon );\r\n container.appendChild( calendarButton.root );\r\n\r\n LX.doAsync( this.onResize.bind( this ) );\r\n }\r\n}\r\n\r\nLX.Map2D = Map2D;\r\n","// NodeTree.ts @jxarco\r\n\r\nimport { TreeEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\nimport { Button } from './Button';\r\nimport { ContextMenu } from './ContextMenu';\r\n\r\n/**\r\n * @class NodeTree\r\n */\r\n\r\nexport class NodeTree\r\n{\r\n domEl: any;\r\n data: any;\r\n onevent: any;\r\n options: any;\r\n selected: any[] = [];\r\n\r\n _forceClose: boolean = false;\r\n\r\n constructor( domEl: any, data: any, options: any = {} )\r\n {\r\n this.domEl = domEl;\r\n this.data = data;\r\n this.onevent = options.onevent;\r\n this.options = options;\r\n\r\n if ( data.constructor === Object )\r\n {\r\n this._createItem( null, data );\r\n }\r\n else\r\n {\r\n for ( let d of data )\r\n {\r\n this._createItem( null, d );\r\n }\r\n }\r\n }\r\n\r\n _createItem( parent: any, node: any, level: number = 0, selectedId?: string )\r\n {\r\n const that = this;\r\n const nodeFilterInput = this.domEl.querySelector( '.lexnodetreefilter' );\r\n\r\n node.children = node.children ?? [];\r\n\r\n if ( nodeFilterInput && nodeFilterInput.value != '' && !node.id.includes( nodeFilterInput.value ) )\r\n {\r\n for ( var i = 0; i < node.children.length; ++i )\r\n {\r\n this._createItem( node, node.children[i], level + 1, selectedId );\r\n }\r\n\r\n return;\r\n }\r\n\r\n const list = this.domEl.querySelector( 'ul' );\r\n\r\n node.visible = node.visible ?? true;\r\n node.parent = parent;\r\n let isParent = node.children.length > 0;\r\n let isSelected = this.selected.indexOf( node ) > -1 || node.selected;\r\n\r\n if ( this.options.onlyFolders )\r\n {\r\n let hasFolders = false;\r\n node.children.forEach( ( c: any ) => {\r\n hasFolders = hasFolders || ( c.type == 'folder' );\r\n } );\r\n isParent = !!hasFolders;\r\n }\r\n\r\n let item: any = document.createElement( 'li' );\r\n item.className = 'lextreeitem ' + 'datalevel' + level + ( isParent ? ' parent' : '' )\r\n + ( isSelected ? ' selected' : '' );\r\n item.id = LX.getSupportedDOMName( node.id );\r\n item.tabIndex = '0';\r\n item.treeData = node;\r\n\r\n // Select hierarchy icon\r\n let icon = ( this.options.skipDefaultIcon ?? true ) ? null : 'Dot'; // Default: no childs\r\n if ( isParent )\r\n {\r\n icon = node.closed ? 'Right' : 'Down';\r\n }\r\n\r\n if ( icon )\r\n {\r\n item.appendChild( LX.makeIcon( icon, { iconClass: 'hierarchy', svgClass: 'xs' } ) );\r\n }\r\n\r\n // Add display icon\r\n icon = node.icon;\r\n\r\n // Process icon\r\n if ( icon )\r\n {\r\n if ( !node.icon.includes( '.' ) )\r\n { // Not a file\r\n const classes = node.icon.split( ' ' );\r\n const nodeIcon = LX.makeIcon( classes[0], { iconClass: 'tree-item-icon mr-2',\r\n svgClass: 'md' + ( classes.length > 1 ? ` ${classes.slice( 0 ).join( ' ' )}` : '' ) } );\r\n item.appendChild( nodeIcon );\r\n }\r\n // an image..\r\n else\r\n {\r\n const rootPath = 'https://raw.githubusercontent.com/jxarco/lexgui.js/master/';\r\n item.innerHTML += \"<img src='\" + ( rootPath + node.icon ) + \"'>\";\r\n }\r\n }\r\n\r\n item.innerHTML += node.rename ? '' : node.id;\r\n\r\n item.setAttribute( 'draggable', true );\r\n item.style.paddingLeft = ( 3 + ( level + 1 ) * 15 ) + 'px';\r\n list.appendChild( item );\r\n\r\n // Callbacks\r\n item.addEventListener( 'click', ( e: MouseEvent ) => {\r\n if ( handled )\r\n {\r\n handled = false;\r\n return;\r\n }\r\n\r\n if ( !e.shiftKey )\r\n {\r\n list.querySelectorAll( 'li' ).forEach( ( e: HTMLElement ) => {\r\n e.classList.remove( 'selected' );\r\n } );\r\n this.selected.length = 0;\r\n }\r\n\r\n // Add or remove\r\n const idx = this.selected.indexOf( node );\r\n if ( idx > -1 )\r\n {\r\n item.classList.remove( 'selected' );\r\n this.selected.splice( idx, 1 );\r\n }\r\n else\r\n {\r\n item.classList.add( 'selected' );\r\n this.selected.push( node );\r\n }\r\n\r\n // Only Show children...\r\n if ( isParent && node.id.length > 1 /* Strange case... */ )\r\n {\r\n node.closed = false;\r\n if ( that.onevent )\r\n {\r\n const event = new TreeEvent( TreeEvent.NODE_CARETCHANGED, node, node.closed, e );\r\n that.onevent( event );\r\n }\r\n that.frefresh( node.id );\r\n }\r\n\r\n if ( that.onevent )\r\n {\r\n const event = new TreeEvent( TreeEvent.NODE_SELECTED, node, this.selected, e );\r\n event.multiple = e.shiftKey;\r\n that.onevent( event );\r\n }\r\n } );\r\n\r\n item.addEventListener( 'dblclick', function( e: MouseEvent )\r\n {\r\n if ( that.options.rename ?? true )\r\n {\r\n // Trigger rename\r\n node.rename = true;\r\n that.refresh();\r\n }\r\n\r\n if ( that.onevent )\r\n {\r\n const event = new TreeEvent( TreeEvent.NODE_DBLCLICKED, node, null, e );\r\n that.onevent( event );\r\n }\r\n } );\r\n\r\n item.addEventListener( 'contextmenu', ( e: any ) => {\r\n e.preventDefault();\r\n\r\n if ( !that.onevent )\r\n {\r\n return;\r\n }\r\n\r\n const event: any = new TreeEvent( TreeEvent.NODE_CONTEXTMENU, node, this.selected, e );\r\n event.multiple = this.selected.length > 1;\r\n\r\n LX.addContextMenu( event.multiple ? 'Selected Nodes' : event.node.id, event.event, ( m: ContextMenu ) => {\r\n event.panel = m;\r\n } );\r\n\r\n that.onevent( event );\r\n\r\n if ( this.options.addDefault ?? false )\r\n {\r\n if ( event.panel.items )\r\n {\r\n event.panel.add( '' );\r\n }\r\n\r\n event.panel.add( 'Select Children', () => {\r\n const selectChildren = ( n: any ) => {\r\n if ( n.closed )\r\n {\r\n return;\r\n }\r\n\r\n for ( let child of n.children ?? [] )\r\n {\r\n if ( !child )\r\n {\r\n continue;\r\n }\r\n\r\n let nodeItem = this.domEl.querySelector( '#' + child.id );\r\n nodeItem.classList.add( 'selected' );\r\n this.selected.push( child );\r\n selectChildren( child );\r\n }\r\n };\r\n\r\n this.domEl.querySelectorAll( '.selected' ).forEach( ( i: HTMLElement ) =>\r\n i.classList.remove( 'selected' )\r\n );\r\n this.selected.length = 0;\r\n\r\n // Add childs of the clicked node\r\n selectChildren( node );\r\n } );\r\n\r\n event.panel.add( 'Delete', { callback: () => {\r\n const ok = that.deleteNode( node );\r\n\r\n if ( ok && that.onevent )\r\n {\r\n const event = new TreeEvent( TreeEvent.NODE_DELETED, node, [ node ], null );\r\n that.onevent( event );\r\n }\r\n\r\n this.refresh();\r\n } } );\r\n }\r\n } );\r\n\r\n item.addEventListener( 'keydown', ( e: KeyboardEvent ) => {\r\n if ( node.rename )\r\n {\r\n return;\r\n }\r\n\r\n e.preventDefault();\r\n\r\n if ( e.key == 'Delete' )\r\n {\r\n const nodesDeleted = [];\r\n\r\n for ( let _node of this.selected )\r\n {\r\n if ( that.deleteNode( _node ) )\r\n {\r\n nodesDeleted.push( _node );\r\n }\r\n }\r\n\r\n // Send event now so we have the info in selected array..\r\n if ( nodesDeleted.length && that.onevent )\r\n {\r\n const event = new TreeEvent( TreeEvent.NODE_DELETED, node, nodesDeleted, e );\r\n event.multiple = nodesDeleted.length > 1;\r\n that.onevent( event );\r\n }\r\n\r\n this.selected.length = 0;\r\n\r\n this.refresh();\r\n }\r\n else if ( e.key == 'ArrowUp' || e.key == 'ArrowDown' )\r\n { // Unique or zero selected\r\n var selected = this.selected.length > 1\r\n ? ( e.key == 'ArrowUp' ? this.selected.shift() : this.selected.pop() )\r\n : this.selected[0];\r\n var el = this.domEl.querySelector( '#' + LX.getSupportedDOMName( selected.id ) );\r\n var sibling = e.key == 'ArrowUp' ? el.previousSibling : el.nextSibling;\r\n if ( sibling )\r\n {\r\n sibling.click();\r\n }\r\n }\r\n } );\r\n\r\n // Node rename\r\n\r\n const nameInput = document.createElement( 'input' );\r\n nameInput.toggleAttribute( 'hidden', !node.rename );\r\n nameInput.className = 'bg-none';\r\n nameInput.value = node.id;\r\n item.appendChild( nameInput );\r\n\r\n if ( node.rename )\r\n {\r\n item.classList.add( 'selected' );\r\n nameInput.focus();\r\n }\r\n\r\n nameInput.addEventListener( 'keyup', function( e )\r\n {\r\n if ( e.key == 'Enter' )\r\n {\r\n this.value = this.value.replace( /\\s/g, '_' );\r\n\r\n if ( that.onevent )\r\n {\r\n const event = new TreeEvent( TreeEvent.NODE_RENAMED, node, this.value, e );\r\n that.onevent( event );\r\n }\r\n\r\n node.id = LX.getSupportedDOMName( this.value );\r\n delete node.rename;\r\n that.frefresh( node.id );\r\n list.querySelector( '#' + node.id ).classList.add( 'selected' );\r\n }\r\n else if ( e.key == 'Escape' )\r\n {\r\n delete node.rename;\r\n that.frefresh( node.id );\r\n }\r\n } );\r\n\r\n nameInput.addEventListener( 'blur', function( e )\r\n {\r\n delete node.rename;\r\n that.refresh();\r\n } );\r\n\r\n if ( this.options.draggable ?? true )\r\n {\r\n // Drag nodes\r\n if ( parent )\r\n { // Root doesn't move!\r\n item.addEventListener( 'dragstart', ( e: DragEvent ) => {\r\n ( window as any ).__tree_node_dragged = node;\r\n } );\r\n }\r\n\r\n /* Events fired on other node items */\r\n item.addEventListener( 'dragover', ( e: DragEvent ) => {\r\n e.preventDefault(); // allow drop\r\n }, false );\r\n item.addEventListener( 'dragenter', ( e: any ) => {\r\n e.target.classList.add( 'draggingover' );\r\n } );\r\n item.addEventListener( 'dragend', ( e: any ) => {\r\n e.target.classList.remove( 'draggingover' );\r\n } );\r\n item.addEventListener( 'dragleave', ( e: any ) => {\r\n e.target.classList.remove( 'draggingover' );\r\n } );\r\n item.addEventListener( 'drop', ( e: DragEvent ) => {\r\n e.preventDefault(); // Prevent default action (open as link for some elements)\r\n let dragged = ( window as any ).__tree_node_dragged;\r\n if ( !dragged )\r\n {\r\n // Test if we are moving from AssetView extension\r\n dragged = ( window as any ).__av_item_dragged;\r\n if ( dragged )\r\n {\r\n dragged._nodeTarget = node;\r\n }\r\n\r\n return;\r\n }\r\n\r\n let target = node;\r\n // Can't drop to same node\r\n if ( dragged.id == target.id )\r\n {\r\n console.warn( 'Cannot parent node to itself!' );\r\n return;\r\n }\r\n\r\n // Can't drop to child node\r\n const isChild = function( newParent: any, node: any ): boolean\r\n {\r\n var result = false;\r\n for ( var c of node.children )\r\n {\r\n if ( c.id == newParent.id ) return true;\r\n result = result || isChild( newParent, c );\r\n }\r\n return result;\r\n };\r\n\r\n if ( isChild( target, dragged ) )\r\n {\r\n console.warn( 'Cannot parent node to a current child!' );\r\n return;\r\n }\r\n\r\n // Trigger node dragger event\r\n if ( that.onevent )\r\n {\r\n const event = new TreeEvent( TreeEvent.NODE_DRAGGED, dragged, target, e );\r\n that.onevent( event );\r\n }\r\n\r\n const index = dragged.parent.children.findIndex( ( n: any ) => n.id == dragged.id );\r\n const removed = dragged.parent.children.splice( index, 1 );\r\n target.children.push( removed[0] );\r\n that.refresh();\r\n delete ( window as any ).__tree_node_dragged;\r\n } );\r\n }\r\n\r\n let handled = false;\r\n\r\n // Show/hide children\r\n if ( isParent )\r\n {\r\n item.querySelector( 'a.hierarchy' ).addEventListener( 'click', function( e: MouseEvent )\r\n {\r\n handled = true;\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n\r\n if ( e.altKey )\r\n {\r\n const _closeNode = function( node: any )\r\n {\r\n node.closed = !node.closed;\r\n for ( var c of node.children )\r\n {\r\n _closeNode( c );\r\n }\r\n };\r\n _closeNode( node );\r\n }\r\n else\r\n {\r\n node.closed = !node.closed;\r\n }\r\n\r\n if ( that.onevent )\r\n {\r\n const event = new TreeEvent( TreeEvent.NODE_CARETCHANGED, node, node.closed, e );\r\n that.onevent( event );\r\n }\r\n that.frefresh( node.id );\r\n } );\r\n }\r\n\r\n // Add button icons\r\n\r\n const inputContainer = document.createElement( 'div' );\r\n item.appendChild( inputContainer );\r\n\r\n if ( node.actions )\r\n {\r\n for ( let i = 0; i < node.actions.length; ++i )\r\n {\r\n const action = node.actions[i];\r\n const actionBtn = new Button( null, '', ( swapValue: boolean, event: any ) => {\r\n event.stopPropagation();\r\n if ( action.callback )\r\n {\r\n action.callback( node, swapValue, event );\r\n }\r\n }, { icon: action.icon, swap: action.swap, title: action.name, hideName: true, className: 'p-0 m-0',\r\n buttonClass: 'p-0 m-0 bg-none no-h' } );\r\n actionBtn.root.style.minWidth = 'fit-content';\r\n actionBtn.root.style.margin = '0'; // adding classes does not work\r\n actionBtn.root.style.padding = '0'; // adding classes does not work\r\n const _btn = actionBtn.root.querySelector( 'button' );\r\n _btn.style.minWidth = 'fit-content';\r\n _btn.style.margin = '0'; // adding classes does not work\r\n _btn.style.padding = '0'; // adding classes does not work\r\n\r\n inputContainer.appendChild( actionBtn.root );\r\n }\r\n }\r\n\r\n if ( !( node.skipVisibility ?? false ) )\r\n {\r\n const visibilityBtn = new Button( null, '', ( swapValue: boolean, e: any ) => {\r\n e.stopPropagation();\r\n node.visible = node.visible === undefined ? false : !node.visible;\r\n // Trigger visibility event\r\n if ( that.onevent )\r\n {\r\n const event = new TreeEvent( TreeEvent.NODE_VISIBILITY, node, node.visible, e );\r\n that.onevent( event );\r\n }\r\n }, { icon: node.visible ? 'Eye' : 'EyeOff', swap: node.visible ? 'EyeOff' : 'Eye', title: 'Toggle visible',\r\n className: 'p-0 m-0', buttonClass: 'bg-none' } );\r\n inputContainer.appendChild( visibilityBtn.root );\r\n }\r\n\r\n const _hasChild = function( node: any, id: string | undefined ): boolean\r\n {\r\n if ( node.id == id ) return true;\r\n let found = false;\r\n for ( var c of ( node?.children ?? [] ) )\r\n {\r\n found = found || _hasChild( c, id );\r\n }\r\n return found;\r\n };\r\n\r\n const exists = _hasChild( node, selectedId );\r\n\r\n if ( node.closed && !exists )\r\n {\r\n return;\r\n }\r\n\r\n for ( var i = 0; i < node.children.length; ++i )\r\n {\r\n let child = node.children[i];\r\n\r\n if ( this.options.onlyFolders && child.type != 'folder' )\r\n {\r\n continue;\r\n }\r\n\r\n this._createItem( node, child, level + 1, selectedId );\r\n }\r\n }\r\n\r\n refresh( newData?: any, selectedId?: string )\r\n {\r\n this.data = newData ?? this.data;\r\n this.domEl.querySelector( 'ul' ).innerHTML = '';\r\n\r\n if ( this.data.constructor === Object )\r\n {\r\n this._createItem( null, this.data, 0, selectedId );\r\n }\r\n else\r\n {\r\n for ( let d of this.data )\r\n {\r\n this._createItem( null, d, 0, selectedId );\r\n }\r\n }\r\n }\r\n\r\n /* Refreshes the tree and focuses current element */\r\n frefresh( id: string )\r\n {\r\n this.refresh();\r\n var el = this.domEl.querySelector( `#${id}` );\r\n if ( el )\r\n {\r\n el.focus();\r\n }\r\n }\r\n\r\n select( id: string )\r\n {\r\n const nodeFilter = this.domEl.querySelector( '.lexnodetreefilter' );\r\n if ( nodeFilter )\r\n {\r\n nodeFilter.value = '';\r\n }\r\n\r\n this.refresh( null, id );\r\n\r\n this.domEl.querySelectorAll( '.selected' ).forEach( ( i: HTMLElement ) => i.classList.remove( 'selected' ) );\r\n\r\n // Unselect\r\n if ( !id )\r\n {\r\n this.selected.length = 0;\r\n return;\r\n }\r\n\r\n // Element should exist, since tree was refreshed to show it\r\n const el = this.domEl.querySelector( '#' + id );\r\n console.assert( el, \"NodeTree: Can't select node \" + id );\r\n\r\n el.classList.add( 'selected' );\r\n this.selected = [ el.treeData ];\r\n el.focus();\r\n }\r\n\r\n deleteNode( node: any ): boolean\r\n {\r\n const dataAsArray = this.data.constructor === Array;\r\n\r\n // Can be either Array or Object type data\r\n if ( node.parent )\r\n {\r\n let childs = node.parent.children;\r\n const index = childs.indexOf( node );\r\n childs.splice( index, 1 );\r\n }\r\n else\r\n {\r\n if ( dataAsArray )\r\n {\r\n const index = this.data.indexOf( node );\r\n console.assert( index > -1, \"NodeTree: Can't delete root node \" + node.id + ' from data array!' );\r\n this.data.splice( index, 1 );\r\n }\r\n else\r\n {\r\n console.warn( \"NodeTree: Can't delete root node from object data!\" );\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n\r\nLX.NodeTree = NodeTree;\r\n\r\n/**\r\n * @class Tree\r\n * @description Tree Component\r\n */\r\n\r\nexport class Tree extends BaseComponent\r\n{\r\n innerTree: NodeTree;\r\n\r\n constructor( name: string, data: any, options: any = {} )\r\n {\r\n options.hideName = true;\r\n\r\n super( ComponentType.TREE, name, null, options );\r\n\r\n let container = document.createElement( 'div' );\r\n container.className = 'lextree';\r\n this.root.appendChild( container );\r\n\r\n if ( name )\r\n {\r\n let title = document.createElement( 'span' );\r\n title.innerHTML = name;\r\n container.appendChild( title );\r\n }\r\n\r\n let toolsDiv = document.createElement( 'div' );\r\n toolsDiv.className = 'lextreetools';\r\n if ( !name )\r\n {\r\n toolsDiv.className += ' notitle';\r\n }\r\n\r\n // Tree icons\r\n if ( options.icons )\r\n {\r\n for ( let data of options.icons )\r\n {\r\n const iconEl = LX.makeIcon( data.icon, { title: data.name } );\r\n iconEl.addEventListener( 'click', data.callback );\r\n toolsDiv.appendChild( iconEl );\r\n }\r\n }\r\n\r\n // Node filter\r\n\r\n options.filter = options.filter ?? true;\r\n\r\n let nodeFilterInput = null;\r\n if ( options.filter )\r\n {\r\n nodeFilterInput = document.createElement( 'input' );\r\n nodeFilterInput.className = 'lexnodetreefilter';\r\n nodeFilterInput.setAttribute( 'placeholder', 'Filter..' );\r\n nodeFilterInput.style.width = '100%';\r\n nodeFilterInput.addEventListener( 'input', () => {\r\n this.innerTree.refresh();\r\n } );\r\n\r\n let searchIcon = LX.makeIcon( 'Search' );\r\n toolsDiv.appendChild( nodeFilterInput );\r\n toolsDiv.appendChild( searchIcon );\r\n }\r\n\r\n if ( options.icons || options.filter )\r\n {\r\n container.appendChild( toolsDiv );\r\n }\r\n\r\n // Tree\r\n\r\n let list = document.createElement( 'ul' );\r\n list.addEventListener( 'contextmenu', function( e )\r\n {\r\n e.preventDefault();\r\n } );\r\n\r\n container.appendChild( list );\r\n\r\n this.innerTree = new NodeTree( container, data, options );\r\n }\r\n}\r\n\r\nLX.Tree = Tree;\r\n","// OTPInput.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\n\r\n/**\r\n * @class OTPInput\r\n * @description OTPInput Component\r\n */\r\n\r\nexport class OTPInput extends BaseComponent\r\n{\r\n constructor( name: string, value: string, callback: any, options: any = {} )\r\n {\r\n const pattern = options.pattern ?? 'xxx-xxx';\r\n const patternSize = ( pattern.match( /x/g ) || [] ).length;\r\n\r\n value = String( value );\r\n if ( !value.length )\r\n {\r\n value = 'x'.repeat( patternSize );\r\n }\r\n\r\n super( ComponentType.OTP, name, value, options );\r\n\r\n this.onGetValue = () => {\r\n return +value;\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n value = newValue;\r\n\r\n _refreshInput( value );\r\n\r\n if ( !skipCallback )\r\n {\r\n this._trigger( new IEvent( name, +newValue, event ), callback );\r\n }\r\n };\r\n\r\n this.onResize = ( rect ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n container.style.width = `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n this.disabled = options.disabled ?? false;\r\n\r\n const container = document.createElement( 'div' );\r\n container.className = 'lexotp flex flex-row items-center';\r\n this.root.appendChild( container );\r\n\r\n const groups = pattern.split( '-' );\r\n\r\n const _refreshInput = ( valueString: string ) => {\r\n container.innerHTML = '';\r\n\r\n let itemsCount = 0;\r\n let activeSlot = 0;\r\n\r\n for ( let i = 0; i < groups.length; ++i )\r\n {\r\n const g = groups[i];\r\n\r\n for ( let j = 0; j < g.length; ++j )\r\n {\r\n let number = valueString[itemsCount++];\r\n number = number == 'x' ? '' : number;\r\n\r\n const slotDom = LX.makeContainer( [ '36px', '30px' ],\r\n 'lexotpslot border-top border-bottom border-left px-3 cursor-text select-none font-medium outline-none',\r\n number, container );\r\n slotDom.tabIndex = '1';\r\n\r\n if ( this.disabled )\r\n {\r\n slotDom.classList.add( 'disabled' );\r\n }\r\n\r\n const otpIndex = itemsCount;\r\n\r\n if ( j == 0 )\r\n {\r\n slotDom.className += ' rounded-l';\r\n }\r\n else if ( j == ( g.length - 1 ) )\r\n {\r\n slotDom.className += ' rounded-r border-right';\r\n }\r\n\r\n slotDom.addEventListener( 'click', () => {\r\n if ( this.disabled ) return;\r\n container.querySelectorAll( '.lexotpslot' ).forEach( ( s ) => s.classList.remove( 'active' ) );\r\n const activeDom: any = container.querySelectorAll( '.lexotpslot' )[activeSlot];\r\n activeDom.classList.add( 'active' );\r\n activeDom.focus();\r\n } );\r\n\r\n slotDom.addEventListener( 'blur', () => {\r\n if ( this.disabled ) return;\r\n LX.doAsync( () => {\r\n if ( container.contains( document.activeElement ) ) return;\r\n container.querySelectorAll( '.lexotpslot' ).forEach( ( s ) =>\r\n s.classList.remove( 'active' )\r\n );\r\n }, 10 );\r\n } );\r\n\r\n slotDom.addEventListener( 'keyup', ( e: KeyboardEvent ) => {\r\n if ( this.disabled ) return;\r\n if ( !/[^0-9]+/g.test( e.key ) )\r\n {\r\n const number = e.key;\r\n console.assert( !Number.isNaN( parseInt( number ) ) );\r\n\r\n slotDom.innerHTML = number;\r\n valueString = valueString.substring( 0, otpIndex - 1 ) + number\r\n + valueString.substring( otpIndex );\r\n\r\n const nexActiveDom: any = container.querySelectorAll( '.lexotpslot' )[activeSlot + 1];\r\n if ( nexActiveDom )\r\n {\r\n container.querySelectorAll( '.lexotpslot' )[activeSlot].classList.remove( 'active' );\r\n nexActiveDom.classList.add( 'active' );\r\n nexActiveDom.focus();\r\n activeSlot++;\r\n }\r\n else\r\n {\r\n this.set( valueString );\r\n }\r\n }\r\n else if ( e.key == 'ArrowLeft' || e.key == 'ArrowRight' )\r\n {\r\n const dt = ( e.key == 'ArrowLeft' ) ? -1 : 1;\r\n const newActiveDom: any = container.querySelectorAll( '.lexotpslot' )[activeSlot + dt];\r\n if ( newActiveDom )\r\n {\r\n container.querySelectorAll( '.lexotpslot' )[activeSlot].classList.remove( 'active' );\r\n newActiveDom.classList.add( 'active' );\r\n newActiveDom.focus();\r\n activeSlot += dt;\r\n }\r\n }\r\n else if ( e.key == 'Enter' && !valueString.includes( 'x' ) )\r\n {\r\n this.set( valueString );\r\n }\r\n } );\r\n }\r\n\r\n if ( i < ( groups.length - 1 ) )\r\n {\r\n LX.makeContainer( [ 'auto', 'auto' ], 'mx-2', `-`, container );\r\n }\r\n }\r\n\r\n console.assert( itemsCount == valueString.length, 'OTP Value/Pattern Mismatch!' );\r\n };\r\n\r\n _refreshInput( value );\r\n }\r\n}\r\n\r\nLX.OTPInput = OTPInput;\r\n","// Pad.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { vec2 } from './../core/Vec2';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\n\r\n/**\r\n * @class Pad\r\n * @description Pad Component\r\n */\r\n\r\nexport class Pad extends BaseComponent\r\n{\r\n constructor( name: string, value: number[], callback: any, options: any = {} )\r\n {\r\n super( ComponentType.PAD, name, null, options );\r\n\r\n this.onGetValue = () => {\r\n return thumb.value.xy;\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n thumb.value.set( newValue[0], newValue[1] );\r\n _updateValue( thumb.value );\r\n if ( !skipCallback )\r\n {\r\n this._trigger( new IEvent( name, thumb.value.xy, event ), callback );\r\n }\r\n };\r\n\r\n this.onResize = ( rect ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n container.style.width = `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n var container = document.createElement( 'div' );\r\n container.className = 'lexpad';\r\n this.root.appendChild( container );\r\n\r\n let pad: any = document.createElement( 'div' );\r\n pad.id = 'lexpad-' + name;\r\n pad.className = 'lexinnerpad';\r\n pad.style.width = options.padSize ?? '96px';\r\n pad.style.height = options.padSize ?? '96px';\r\n container.appendChild( pad );\r\n\r\n let thumb: any = document.createElement( 'div' );\r\n thumb.className = 'lexpadthumb';\r\n thumb.value = new vec2( value[0], value[1] );\r\n thumb.min = options.min ?? 0;\r\n thumb.max = options.max ?? 1;\r\n pad.appendChild( thumb );\r\n\r\n let _updateValue = ( v: vec2 ) => {\r\n const [ w, h ] = [ pad.offsetWidth, pad.offsetHeight ];\r\n const value0to1 = new vec2( LX.remapRange( v.x, thumb.min, thumb.max, 0.0, 1.0 ),\r\n LX.remapRange( v.y, thumb.min, thumb.max, 0.0, 1.0 ) );\r\n thumb.style.transform = `translate(calc( ${w * value0to1.x}px - 50% ), calc( ${h * value0to1.y}px - 50%)`;\r\n };\r\n\r\n pad.addEventListener( 'mousedown', innerMouseDown );\r\n\r\n let that = this;\r\n\r\n function innerMouseDown( e: MouseEvent )\r\n {\r\n if ( document.activeElement == thumb )\r\n {\r\n return;\r\n }\r\n\r\n var doc = that.root.ownerDocument;\r\n doc.addEventListener( 'mousemove', innerMouseMove );\r\n doc.addEventListener( 'mouseup', innerMouseUp );\r\n document.body.classList.add( 'nocursor' );\r\n document.body.classList.add( 'noevents' );\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n thumb.classList.add( 'active' );\r\n\r\n if ( options.onPress )\r\n {\r\n options.onPress.bind( thumb )( e, thumb );\r\n }\r\n }\r\n\r\n function innerMouseMove( e: MouseEvent )\r\n {\r\n const rect = pad.getBoundingClientRect();\r\n const relativePosition = new vec2( e.x - rect.x, e.y - rect.y );\r\n relativePosition.clp( 0.0, pad.offsetWidth, relativePosition );\r\n const [ w, h ] = [ pad.offsetWidth, pad.offsetHeight ];\r\n const value0to1 = relativePosition.div( new vec2( pad.offsetWidth, pad.offsetHeight ) );\r\n\r\n thumb.style.transform = `translate(calc( ${w * value0to1.x}px - 50% ), calc( ${h * value0to1.y}px - 50%)`;\r\n thumb.value = new vec2( LX.remapRange( value0to1.x, 0.0, 1.0, thumb.min, thumb.max ),\r\n LX.remapRange( value0to1.y, 0.0, 1.0, thumb.min, thumb.max ) );\r\n\r\n that._trigger( new IEvent( name, thumb.value.xy, e ), callback );\r\n\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n\r\n function innerMouseUp( e: MouseEvent )\r\n {\r\n var doc = that.root.ownerDocument;\r\n doc.removeEventListener( 'mousemove', innerMouseMove );\r\n doc.removeEventListener( 'mouseup', innerMouseUp );\r\n document.body.classList.remove( 'nocursor' );\r\n document.body.classList.remove( 'noevents' );\r\n thumb.classList.remove( 'active' );\r\n\r\n if ( options.onRelease )\r\n {\r\n options.onRelease.bind( thumb )( e, thumb );\r\n }\r\n }\r\n\r\n LX.doAsync( () => {\r\n this.onResize();\r\n _updateValue( thumb.value );\r\n } );\r\n }\r\n}\r\n\r\nLX.Pad = Pad;\r\n","// Button.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\n\r\n/**\r\n * @class Progress\r\n * @description Progress Component\r\n */\r\n\r\nexport class Progress extends BaseComponent\r\n{\r\n constructor( name: string, value: number, options: any = {} )\r\n {\r\n super( ComponentType.PROGRESS, name, value, options );\r\n\r\n this.onGetValue = () => {\r\n return progress.value;\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n newValue = LX.clamp( newValue, progress.min, progress.max );\r\n this.root.querySelector( 'meter' ).value = newValue;\r\n _updateColor();\r\n if ( this.root.querySelector( 'span' ) )\r\n {\r\n this.root.querySelector( 'span' ).innerText = newValue;\r\n }\r\n\r\n if ( !skipCallback )\r\n {\r\n this._trigger( new IEvent( name, newValue, event ), options.callback );\r\n }\r\n };\r\n\r\n this.onResize = ( rect ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n container.style.width = `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n const container = document.createElement( 'div' );\r\n container.className = 'lexprogress';\r\n this.root.appendChild( container );\r\n\r\n // add slider (0-1 if not specified different )\r\n\r\n let progress: any = document.createElement( 'meter' );\r\n progress.id = 'lexprogressbar-' + name;\r\n progress.className = 'lexprogressbar';\r\n progress.step = 'any';\r\n progress.min = options.min ?? 0;\r\n progress.max = options.max ?? 1;\r\n progress.low = options.low ?? progress.low;\r\n progress.high = options.high ?? progress.high;\r\n progress.optimum = options.optimum ?? progress.optimum;\r\n progress.value = value;\r\n container.appendChild( progress );\r\n\r\n const _updateColor = () => {\r\n let backgroundColor = LX.getThemeColor( 'global-selected' );\r\n\r\n if ( progress.low != undefined && progress.value < progress.low )\r\n {\r\n backgroundColor = LX.getThemeColor( 'global-color-error' );\r\n }\r\n else if ( progress.high != undefined && progress.value < progress.high )\r\n {\r\n backgroundColor = LX.getThemeColor( 'global-color-warning' );\r\n }\r\n\r\n progress.style.background = `color-mix(in srgb, ${backgroundColor} 20%, transparent)`;\r\n };\r\n\r\n if ( options.showValue )\r\n {\r\n const oldSpan: HTMLElement | null = document.getElementById( 'progressvalue-' + name );\r\n if ( oldSpan )\r\n {\r\n oldSpan.remove();\r\n }\r\n\r\n let span: any = document.createElement( 'span' );\r\n span.id = 'progressvalue-' + name;\r\n span.style.padding = '0px 5px';\r\n span.innerText = value;\r\n container.appendChild( span );\r\n }\r\n\r\n if ( options.editable ?? false )\r\n {\r\n progress.classList.add( 'editable' );\r\n\r\n let innerMouseDown = ( e: MouseEvent ) => {\r\n var doc = this.root.ownerDocument;\r\n doc.addEventListener( 'mousemove', innerMouseMove );\r\n doc.addEventListener( 'mouseup', innerMouseUp );\r\n document.body.classList.add( 'noevents' );\r\n progress.classList.add( 'grabbing' );\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n\r\n const rect = progress.getBoundingClientRect();\r\n const newValue = LX.round( LX.remapRange( e.offsetX, 0, rect.width, progress.min, progress.max ) );\r\n this.set( newValue, false, e );\r\n };\r\n\r\n let innerMouseMove = ( e: MouseEvent ) => {\r\n let dt = e.movementX;\r\n\r\n if ( dt != 0 )\r\n {\r\n const rect = progress.getBoundingClientRect();\r\n const newValue = LX.round(\r\n LX.remapRange( e.offsetX - rect.x, 0, rect.width, progress.min, progress.max )\r\n );\r\n this.set( newValue, false, e );\r\n }\r\n\r\n e.stopPropagation();\r\n e.preventDefault();\r\n };\r\n\r\n let innerMouseUp = ( e: MouseEvent ) => {\r\n var doc = this.root.ownerDocument;\r\n doc.removeEventListener( 'mousemove', innerMouseMove );\r\n doc.removeEventListener( 'mouseup', innerMouseUp );\r\n document.body.classList.remove( 'noevents' );\r\n progress.classList.remove( 'grabbing' );\r\n };\r\n\r\n progress.addEventListener( 'mousedown', innerMouseDown );\r\n }\r\n\r\n _updateColor();\r\n\r\n LX.doAsync( this.onResize.bind( this ) );\r\n }\r\n}\r\n\r\nLX.Progress = Progress;\r\n","// RadioGroup.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\n\r\n/**\r\n * @class RadioGroup\r\n * @description RadioGroup Component\r\n */\r\n\r\nexport class RadioGroup extends BaseComponent\r\n{\r\n constructor( name: string, label: string, values: any[], callback: any, options: any = {} )\r\n {\r\n super( ComponentType.RADIO, name, null, options );\r\n\r\n let currentIndex: number | null = null;\r\n\r\n this.onGetValue = () => {\r\n const items = container.querySelectorAll( 'button' );\r\n return currentIndex ? [ currentIndex, items[currentIndex] ] : undefined;\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n newValue = newValue[0] ?? newValue; // Allow getting index of { index, value } tupple\r\n\r\n console.assert( newValue.constructor == Number, 'RadioGroup _value_ must be an Array index!' );\r\n\r\n const items = container.querySelectorAll( 'button' );\r\n items.forEach( ( b: any ) => {\r\n b.checked = false;\r\n b.classList.remove( 'checked' );\r\n } );\r\n\r\n const optionItem: any = items[newValue];\r\n optionItem.checked = !optionItem.checked;\r\n optionItem.classList.toggle( 'checked' );\r\n\r\n if ( !skipCallback )\r\n {\r\n this._trigger( new IEvent( null, [ newValue, values[newValue] ], event ), callback );\r\n }\r\n };\r\n\r\n var container = document.createElement( 'div' );\r\n container.className = 'lexradiogroup ' + ( options.className ?? '' );\r\n this.root.appendChild( container );\r\n\r\n let labelSpan = document.createElement( 'span' );\r\n labelSpan.innerHTML = label;\r\n container.appendChild( labelSpan );\r\n\r\n for ( let i = 0; i < values.length; ++i )\r\n {\r\n const optionItem = document.createElement( 'div' );\r\n optionItem.className = 'lexradiogroupitem';\r\n container.appendChild( optionItem );\r\n\r\n const optionButton = document.createElement( 'button' );\r\n optionButton.className = 'flex p-0 rounded-lg cursor-pointer';\r\n optionButton.disabled = options.disabled ?? false;\r\n optionItem.appendChild( optionButton );\r\n\r\n optionButton.addEventListener( 'click', ( e ) => {\r\n this.set( i, false, e );\r\n } );\r\n\r\n const checkedSpan = document.createElement( 'span' );\r\n optionButton.appendChild( checkedSpan );\r\n\r\n const optionLabel = document.createElement( 'span' );\r\n optionLabel.innerHTML = values[i];\r\n optionItem.appendChild( optionLabel );\r\n }\r\n\r\n if ( options.selected )\r\n {\r\n console.assert( options.selected.constructor == Number, 'RadioGroup _selected_ must be an Array index!' );\r\n currentIndex = options.selected;\r\n this.set( currentIndex, true );\r\n }\r\n }\r\n}\r\n\r\nLX.RadioGroup = RadioGroup;\r\n","// RangeInput.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\n\r\n/**\r\n * @class RangeInput\r\n * @description RangeInput Component\r\n */\r\n\r\nexport class RangeInput extends BaseComponent\r\n{\r\n _maxSlider: HTMLInputElement | null = null;\r\n _labelTooltip: HTMLElement | null = null;\r\n\r\n setLimits: ( newMin: number | null, newMax: number | null, newStep: number | null ) => void;\r\n\r\n constructor( name: string, value: any, callback: any, options: any = {} )\r\n {\r\n const ogValue = LX.deepCopy( value );\r\n\r\n super( ComponentType.RANGE, name, LX.deepCopy( ogValue ), options );\r\n\r\n const isRangeValue = value.constructor == Array && value.length == 2;\r\n if ( isRangeValue )\r\n {\r\n value = ogValue[0];\r\n options.fill = false; // Range inputs do not fill by default\r\n }\r\n\r\n this.onGetValue = () => {\r\n let finalValue = value;\r\n if ( isRangeValue )\r\n {\r\n finalValue = [ value, ogValue[1] ];\r\n }\r\n else if ( options.left )\r\n {\r\n finalValue = ( +slider.max ) - value + ( +slider.min );\r\n }\r\n return finalValue;\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n let newTpContent = '';\r\n\r\n const diff = options.max - options.min;\r\n\r\n if ( isRangeValue && this._maxSlider )\r\n {\r\n slider.value = value = LX.clamp( +newValue[0], +slider.min, +slider.max );\r\n this._maxSlider.value = ogValue[1] = LX.clamp( +newValue[1], +slider.min, +slider.max );\r\n\r\n // Update the range slider\r\n const diffOffset = ( value / diff ) - 0.5;\r\n const diffMaxOffset = ( ogValue[1] / diff ) - 0.5;\r\n const remappedMin = LX.remapRange( value, options.min, options.max, 0, 1 );\r\n const remappedMax = LX.remapRange( ogValue[1], options.min, options.max, 0, 1 );\r\n slider.style.setProperty( '--range-min-value', `${remappedMin * 100}%` );\r\n slider.style.setProperty( '--range-max-value', `${remappedMax * 100}%` );\r\n slider.style.setProperty( '--range-fix-min-offset', `${-diffOffset}rem` );\r\n slider.style.setProperty( '--range-fix-max-offset', `${diffMaxOffset}rem` );\r\n\r\n container.dataset['tooltipOffsetX'] = `${\r\n container.offsetWidth * remappedMin + container.offsetWidth * ( remappedMax - remappedMin ) * 0.5\r\n - ( container.offsetWidth * 0.5 )\r\n }`;\r\n newTpContent = `${value} - ${ogValue[1]}`;\r\n }\r\n else\r\n {\r\n if ( isNaN( newValue ) )\r\n {\r\n return;\r\n }\r\n\r\n slider.value = value = LX.clamp( +newValue, +slider.min, +slider.max );\r\n const remapped = LX.remapRange( value, options.min, options.max, 0, 1 ) * 0.5;\r\n container.dataset['tooltipOffsetX'] = `${\r\n container.offsetWidth * remapped - ( container.offsetWidth * 0.5 )\r\n }`;\r\n newTpContent = `${value}`;\r\n }\r\n\r\n container.dataset['tooltipContent'] = newTpContent;\r\n if ( this._labelTooltip )\r\n {\r\n this._labelTooltip.innerHTML = newTpContent;\r\n }\r\n\r\n if ( !skipCallback )\r\n {\r\n let finalValue = value;\r\n if ( isRangeValue )\r\n {\r\n finalValue = [ value, ogValue[1] ];\r\n }\r\n else if ( options.left )\r\n {\r\n finalValue = ( +slider.max ) - value + ( +slider.min );\r\n }\r\n\r\n this._trigger( new IEvent( name, finalValue, event ), callback );\r\n }\r\n };\r\n\r\n this.onResize = ( rect ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n container.style.width = options.inputWidth ?? `calc( 100% - ${realNameWidth})`;\r\n if ( isRangeValue )\r\n {\r\n const diff = options.max - options.min;\r\n const diffOffset = ( value / diff ) - 0.5;\r\n const diffMaxOffset = ( ogValue[1] / diff ) - 0.5;\r\n slider.style.setProperty( '--range-min-value',\r\n `${LX.remapRange( value, options.min, options.max, 0, 1 ) * 100}%` );\r\n slider.style.setProperty( '--range-max-value',\r\n `${LX.remapRange( ogValue[1], options.min, options.max, 0, 1 ) * 100}%` );\r\n slider.style.setProperty( '--range-fix-min-offset', `${-diffOffset}rem` );\r\n slider.style.setProperty( '--range-fix-max-offset', `${diffMaxOffset}rem` );\r\n }\r\n };\r\n\r\n const container = document.createElement( 'div' );\r\n container.className = 'lexrange relative';\r\n this.root.appendChild( container );\r\n\r\n let slider: any = document.createElement( 'input' );\r\n slider.className = 'lexrangeslider ' + ( isRangeValue ? 'pointer-events-none ' : '' )\r\n + ( options.className ?? '' );\r\n slider.min = options.min ?? 0;\r\n slider.max = options.max ?? 100;\r\n slider.step = options.step ?? 1;\r\n slider.type = 'range';\r\n slider.disabled = options.disabled ?? false;\r\n\r\n if ( value.constructor == Number )\r\n {\r\n value = LX.clamp( value, +slider.min, +slider.max );\r\n }\r\n\r\n if ( options.left ?? false )\r\n {\r\n value = ( +slider.max ) - value + ( +slider.min );\r\n slider.classList.add( 'left' );\r\n }\r\n\r\n if ( !( options.fill ?? true ) )\r\n {\r\n slider.classList.add( 'no-fill' );\r\n }\r\n\r\n slider.value = value;\r\n container.appendChild( slider );\r\n\r\n slider.addEventListener( 'input', ( e: any ) => {\r\n this.set(\r\n isRangeValue ? [ Math.min( e.target.valueAsNumber, ogValue[1] ), ogValue[1] ] : e.target.valueAsNumber,\r\n false,\r\n e\r\n );\r\n }, { passive: false } );\r\n\r\n // If its a range value, we need to update the slider using the thumbs\r\n if ( !isRangeValue )\r\n {\r\n slider.addEventListener( 'mousedown', function( e: MouseEvent )\r\n {\r\n if ( options.onPress )\r\n {\r\n options.onPress.bind( slider )( e, slider );\r\n }\r\n }, false );\r\n\r\n slider.addEventListener( 'mouseup', function( e: MouseEvent )\r\n {\r\n if ( options.onRelease )\r\n {\r\n options.onRelease.bind( slider )( e, slider );\r\n }\r\n }, false );\r\n }\r\n\r\n // Method to change min, max, step parameters\r\n this.setLimits = ( newMin, newMax, newStep ) => {\r\n slider.min = newMin ?? slider.min;\r\n slider.max = newMax ?? slider.max;\r\n slider.step = newStep ?? slider.step;\r\n BaseComponent._dispatchEvent( slider, 'input', true );\r\n };\r\n\r\n LX.doAsync( () => {\r\n this.onResize();\r\n\r\n let offsetX = 0;\r\n if ( isRangeValue )\r\n {\r\n const remappedMin = LX.remapRange( value, options.min, options.max, 0, 1 );\r\n const remappedMax = LX.remapRange( ogValue[1], options.min, options.max, 0, 1 );\r\n offsetX = container.offsetWidth * remappedMin\r\n + container.offsetWidth * ( remappedMax - remappedMin ) * 0.5 - ( container.offsetWidth * 0.5 );\r\n }\r\n else\r\n {\r\n const remapped = LX.remapRange( value, options.min, options.max, 0, 1 ) * 0.5;\r\n offsetX = container.offsetWidth * remapped - ( container.offsetWidth * 0.5 );\r\n }\r\n LX.asTooltip( container, `${value}${isRangeValue ? `- ${ogValue[1]}` : ``}`, { offsetX,\r\n callback: ( tpDom: HTMLElement ) => {\r\n this._labelTooltip = tpDom;\r\n } } );\r\n } );\r\n\r\n if ( ogValue.constructor == Array )\r\n { // Its a range value\r\n let maxSlider = document.createElement( 'input' );\r\n maxSlider.className = 'lexrangeslider no-fill pointer-events-none overlap absolute top-0 left-0 '\r\n + ( options.className ?? '' );\r\n maxSlider.min = options.min ?? 0;\r\n maxSlider.max = options.max ?? 100;\r\n maxSlider.step = options.step ?? 1;\r\n maxSlider.type = 'range';\r\n maxSlider.disabled = options.disabled ?? false;\r\n this._maxSlider = maxSlider;\r\n\r\n let maxRangeValue = ogValue[1];\r\n maxSlider.value = maxRangeValue = LX.clamp( maxRangeValue, +maxSlider.min, +maxSlider.max );\r\n container.appendChild( maxSlider );\r\n\r\n maxSlider.addEventListener( 'input', ( e: any ) => {\r\n ogValue[1] = Math.max( value, +e.target.valueAsNumber );\r\n this.set( [ value, ogValue[1] ], false, e );\r\n }, { passive: false } );\r\n }\r\n }\r\n}\r\n\r\nLX.RangeInput = RangeInput;\r\n","// Rate.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\n\r\n/**\r\n * @class Rate\r\n * @description Rate Component\r\n */\r\n\r\nexport class Rate extends BaseComponent\r\n{\r\n constructor( name: string, value: number, callback: any, options: any = {} )\r\n {\r\n const allowHalf = options.allowHalf ?? false;\r\n\r\n if ( !allowHalf )\r\n {\r\n value = Math.floor( value );\r\n }\r\n\r\n super( ComponentType.RATE, name, value, options );\r\n\r\n this.onGetValue = () => {\r\n return value;\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n value = newValue;\r\n\r\n _updateStars( value );\r\n\r\n if ( !skipCallback )\r\n {\r\n this._trigger( new IEvent( name, newValue, event ), callback );\r\n }\r\n };\r\n\r\n this.onResize = ( rect ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n container.style.width = `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n const container = document.createElement( 'div' );\r\n container.className = 'lexrate relative';\r\n this.root.appendChild( container );\r\n\r\n const starsContainer = LX.makeContainer( [ 'fit-content', 'auto' ], 'flex flex-row gap-1', '', container );\r\n const filledStarsContainer = LX.makeContainer( [ 'fit-content', 'auto' ],\r\n 'absolute top-0 flex flex-row gap-1 pointer-events-none', '', container );\r\n const halfStarsContainer = LX.makeContainer( [ 'fit-content', 'auto' ],\r\n 'absolute top-0 flex flex-row gap-1 pointer-events-none', '', container );\r\n\r\n starsContainer.addEventListener( 'mousemove', ( e: MouseEvent ) => {\r\n const star: any = e.target;\r\n const idx = star.dataset['idx'];\r\n\r\n if ( idx !== undefined )\r\n {\r\n const rect = star.getBoundingClientRect();\r\n const half = allowHalf && e.offsetX < ( rect.width * 0.5 );\r\n _updateStars( idx - ( half ? 0.5 : 0.0 ) );\r\n }\r\n }, false );\r\n\r\n starsContainer.addEventListener( 'mouseleave', ( e: MouseEvent ) => {\r\n _updateStars( value );\r\n }, false );\r\n\r\n // Create all layers of stars\r\n\r\n for ( let i = 0; i < 5; ++i )\r\n {\r\n const starIcon = LX.makeIcon( 'Star', { svgClass: `lg fill-current fg-secondary` } );\r\n starIcon.dataset['idx'] = i + 1;\r\n starsContainer.appendChild( starIcon );\r\n\r\n starIcon.addEventListener( 'click', ( e: MouseEvent ) => {\r\n const star: any = e.target;\r\n const rect = star.getBoundingClientRect();\r\n const half = allowHalf && e.offsetX < ( rect.width * 0.5 );\r\n this.set( parseFloat( star.dataset['idx'] ) - ( half ? 0.5 : 0.0 ) );\r\n }, false );\r\n\r\n const filledStarIcon = LX.makeIcon( 'Star', { svgClass: `lg fill-current fg-yellow-500` } );\r\n filledStarsContainer.appendChild( filledStarIcon );\r\n\r\n const halfStarIcon = LX.makeIcon( 'StarHalf', { svgClass: `lg fill-current fg-yellow-500` } );\r\n halfStarsContainer.appendChild( halfStarIcon );\r\n }\r\n\r\n const _updateStars = ( v: number ) => {\r\n for ( let i = 0; i < 5; ++i )\r\n {\r\n const filled = v > ( i + 0.5 );\r\n const starIcon = filledStarsContainer.childNodes[i];\r\n const halfStarIcon = halfStarsContainer.childNodes[i];\r\n if ( filled )\r\n {\r\n starIcon.style.opacity = 1;\r\n }\r\n else\r\n {\r\n starIcon.style.opacity = 0;\r\n\r\n const halfFilled = allowHalf && ( v > i );\r\n if ( halfFilled )\r\n {\r\n halfStarIcon.style.opacity = 1;\r\n }\r\n else\r\n {\r\n halfStarIcon.style.opacity = 0;\r\n }\r\n }\r\n }\r\n };\r\n\r\n _updateStars( value );\r\n\r\n LX.doAsync( this.onResize.bind( this ) );\r\n }\r\n}\r\n\r\nLX.Rate = Rate;\r\n","// SizeInput.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\nimport { Button } from './Button';\r\n\r\n/**\r\n * @class SizeInput\r\n * @description SizeInput Component\r\n */\r\n\r\nexport class SizeInput extends BaseComponent\r\n{\r\n constructor( name: string, value: number[], callback: any, options: any = {} )\r\n {\r\n super( ComponentType.SIZE, name, value, options );\r\n\r\n this.onGetValue = () => {\r\n const value = [];\r\n for ( let i = 0; i < this.root.dimensions.length; ++i )\r\n {\r\n value.push( this.root.dimensions[i].value() );\r\n }\r\n return value;\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n for ( let i = 0; i < this.root.dimensions.length; ++i )\r\n {\r\n this.root.dimensions[i].set( newValue[i], skipCallback );\r\n }\r\n };\r\n\r\n this.root.aspectRatio = value.length == 2 ? value[0] / value[1] : null;\r\n this.root.dimensions = [];\r\n\r\n for ( let i = 0; i < value.length; ++i )\r\n {\r\n const p = new LX.Panel();\r\n this.root.dimensions[i] = p.addNumber( null, value[i], ( v: number ) => {\r\n const value = this.value();\r\n\r\n if ( this.root.locked )\r\n {\r\n const ar = i == 0 ? 1.0 / this.root.aspectRatio : this.root.aspectRatio;\r\n const index = ( 1 + i ) % 2;\r\n value[index] = v * ar;\r\n this.root.dimensions[index].set( value[index], true );\r\n }\r\n\r\n if ( callback )\r\n {\r\n callback( value );\r\n }\r\n }, { min: 0, disabled: options.disabled, precision: options.precision, className: 'flex-fill' } );\r\n\r\n this.root.appendChild( this.root.dimensions[i].root );\r\n\r\n if ( ( i + 1 ) != value.length )\r\n {\r\n const xIcon = LX.makeIcon( 'X', { svgClass: 'fg-accent font-bold' } );\r\n this.root.appendChild( xIcon );\r\n }\r\n }\r\n\r\n if ( options.units )\r\n {\r\n let unitSpan = document.createElement( 'span' );\r\n unitSpan.className = 'select-none fg-tertiary font-medium';\r\n unitSpan.innerText = options.units;\r\n this.root.appendChild( unitSpan );\r\n }\r\n\r\n // Lock aspect ratio\r\n if ( this.root.aspectRatio )\r\n {\r\n const lockerButton = new Button( null, '', ( swapValue: boolean ) => {\r\n this.root.locked = swapValue;\r\n if ( swapValue )\r\n {\r\n // Recompute ratio\r\n const value = this.value();\r\n this.root.aspectRatio = value[0] / value[1];\r\n }\r\n }, { title: 'Lock Aspect Ratio', icon: 'LockOpen', swap: 'Lock', buttonClass: 'bg-none p-0' } );\r\n this.root.appendChild( lockerButton.root );\r\n }\r\n }\r\n}\r\n\r\nLX.SizeInput = SizeInput;\r\n","// Pagination.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\nimport { Button } from './Button';\r\nimport { Select } from './Select';\r\n\r\n/**\r\n * @class Pagination\r\n */\r\n\r\nexport class Pagination\r\n{\r\n static ITEMS_PER_PAGE_VALUES: number[] = [ 8, 12, 24, 48, 96 ];\r\n\r\n root: HTMLElement;\r\n pagesRoot: HTMLElement;\r\n\r\n page: number = 1;\r\n pages: number = 1;\r\n\r\n _alwaysShowEdges: boolean = true;\r\n _useEllipsis: boolean = true;\r\n _maxButtons: number = 3;\r\n _itemsPerPage: number = 12;\r\n _itemsPerPageValues: number[] = Pagination.ITEMS_PER_PAGE_VALUES;\r\n\r\n onChange: ( page: number ) => void = () => {};\r\n onItemsPerPageChange: ( n: number ) => void = () => {};\r\n\r\n constructor( options: any = {} )\r\n {\r\n this.pages = options.pages ?? 1;\r\n this.page = LX.clamp( options.page ?? 1, 1, this.pages );\r\n\r\n this._alwaysShowEdges = options.alwaysShowEdges ?? this._alwaysShowEdges;\r\n this._useEllipsis = options.useEllipsis ?? this._useEllipsis;\r\n this._maxButtons = options.maxButtons ?? this._maxButtons;\r\n this._itemsPerPage = options.itemsPerPage ?? this._itemsPerPage;\r\n\r\n if ( this._itemsPerPageValues.indexOf( this._itemsPerPage ) === -1 )\r\n {\r\n this._itemsPerPageValues.push( this._itemsPerPage );\r\n this._itemsPerPageValues = this._itemsPerPageValues.sort( ( a: number, b: number ) => {\r\n if ( a < b ) return -1;\r\n if ( a > b ) return 1;\r\n return 0;\r\n } );\r\n }\r\n\r\n if ( typeof options.onChange === 'function' )\r\n {\r\n this.onChange = options.onChange;\r\n }\r\n\r\n if ( typeof options.onItemsPerPageChange === 'function' )\r\n {\r\n this.onItemsPerPageChange = options.onItemsPerPageChange;\r\n }\r\n\r\n this.root = LX.makeContainer( [ 'auto', 'auto' ], 'flex flex-row gap-2 ' + ( options.className ?? '' ) );\r\n\r\n if ( options.allowChangeItemsPerPage ?? false )\r\n {\r\n const itemsPerPageSelectContainer = LX.makeContainer( [ 'auto', 'auto' ], 'flex flex-row items-center', '',\r\n this.root );\r\n const itemsPerPageSelect = new Select( null, Pagination.ITEMS_PER_PAGE_VALUES, this._itemsPerPage,\r\n ( v: number ) => {\r\n this._itemsPerPage = v;\r\n this.onItemsPerPageChange?.( this._itemsPerPage );\r\n }, { overflowContainer: null } );\r\n itemsPerPageSelectContainer.appendChild( itemsPerPageSelect.root );\r\n }\r\n\r\n this.pagesRoot = LX.makeContainer( [ 'auto', 'auto' ], 'flex flex-row overflow-scroll', '', this.root );\r\n\r\n this.refresh();\r\n }\r\n\r\n setPage( n: number )\r\n {\r\n const newPage = LX.clamp( n, 1, this.pages );\r\n\r\n if ( newPage === this.page )\r\n {\r\n return;\r\n }\r\n\r\n this.page = newPage;\r\n this.refresh();\r\n this._emitChange();\r\n }\r\n\r\n setPages( n: number )\r\n {\r\n this.pages = Math.max( 1, n );\r\n\r\n if ( this.page > this.pages )\r\n {\r\n this.page = this.pages;\r\n }\r\n\r\n this.refresh();\r\n }\r\n\r\n next()\r\n {\r\n this.setPage( this.page + 1 );\r\n }\r\n\r\n prev()\r\n {\r\n this.setPage( this.page - 1 );\r\n }\r\n\r\n refresh()\r\n {\r\n this.pagesRoot.innerHTML = '';\r\n\r\n // Previous page button\r\n this._makeButton( LX.makeIcon( 'ChevronLeft' ).innerHTML, this.page === 1, () => this.prev(),\r\n `bg-none ${this.page === 1 ? '' : 'hover:bg-tertiary'}` );\r\n\r\n const pagesContainer = LX.makeContainer( [ 'auto', 'auto' ], 'flex flex-row items-center', '', this.pagesRoot );\r\n const maxButtons = this._maxButtons + 2; // + next and prev\r\n\r\n if ( this.pages <= maxButtons )\r\n {\r\n for ( let i = 1; i <= this.pages; i++ )\r\n {\r\n this._makePageButton( pagesContainer, i );\r\n }\r\n }\r\n else\r\n {\r\n const page = this.page;\r\n const total = this.pages;\r\n\r\n // Always show first and last pages and the middle cluster depends on current page!\r\n\r\n const showFirst = 1;\r\n const showLast = total;\r\n const edgesOffset = this._alwaysShowEdges ? 1 : 0;\r\n const clusterSize = maxButtons - 2; // reserve spots for first and last\r\n const half = Math.floor( clusterSize / 2 );\r\n\r\n let start = Math.max( 1 + edgesOffset, page - half );\r\n let end = Math.min( total - edgesOffset, page + half );\r\n\r\n // Adjust cluster if too close to edges\r\n if ( start <= 2 )\r\n {\r\n start = 1 + edgesOffset;\r\n end = start + clusterSize - 1;\r\n }\r\n\r\n if ( end >= total - 1 )\r\n {\r\n end = total - edgesOffset;\r\n start = end - clusterSize + 1;\r\n }\r\n\r\n // First page\r\n if ( this._alwaysShowEdges )\r\n {\r\n this._makePageButton( pagesContainer, showFirst );\r\n }\r\n\r\n // Ellipsis after first if needed\r\n if ( this._useEllipsis && start > 2 )\r\n {\r\n LX.makeElement( 'span', 'h-6 px-2 text-lg font-semibold whitespace-nowrap', '...', pagesContainer );\r\n }\r\n\r\n // Page button cluster\r\n for ( let i = start; i <= end; i++ )\r\n {\r\n this._makePageButton( pagesContainer, i );\r\n }\r\n\r\n // Ellipsis before last if needed\r\n if ( this._useEllipsis && end < total - 1 )\r\n {\r\n LX.makeElement( 'span', 'h-6 px-2 text-lg font-semibold whitespace-nowrap', '...', pagesContainer );\r\n }\r\n\r\n // Last page\r\n if ( this._alwaysShowEdges )\r\n {\r\n this._makePageButton( pagesContainer, showLast );\r\n }\r\n }\r\n\r\n // Next page button\r\n this._makeButton( LX.makeIcon( 'ChevronRight' ).innerHTML, this.page === this.pages, () => this.next(),\r\n `bg-none ${this.page === this.pages ? '' : 'hover:bg-tertiary'}` );\r\n }\r\n\r\n _emitChange()\r\n {\r\n // Event callback\r\n this.onChange?.( this.page );\r\n\r\n // DOM event for DOM workflows?\r\n this.root.dispatchEvent( new CustomEvent( 'change', {\r\n detail: { page: this.page }\r\n } ) );\r\n }\r\n\r\n _makeButton( label: string, disabled: boolean, onclick: () => void, buttonClass?: string, parent?: HTMLElement )\r\n {\r\n const btn = new Button( null, label, onclick, { disabled, buttonClass } );\r\n btn.root.querySelector( 'button' ).style.paddingInline = '0.5rem';\r\n\r\n parent = parent ?? this.pagesRoot;\r\n parent.appendChild( btn.root );\r\n\r\n return btn.root;\r\n }\r\n\r\n _makePageButton( container: HTMLElement, i: number )\r\n {\r\n const buttonClass = i === this.page ? 'bg-secondary border' : 'bg-none';\r\n return this._makeButton( String( i ), false, () => this.setPage( i ), buttonClass, container );\r\n }\r\n}\r\n\r\nLX.Pagination = Pagination;\r\n","// Rate.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\nimport { Button } from './Button';\r\nimport { CalendarRange } from './CalendarRange';\r\nimport { Pagination } from './Pagination';\r\nimport { Popover } from './Popover';\r\nimport { TextInput } from './TextInput';\r\n\r\n/**\r\n * @class Table\r\n * @description Table Component\r\n */\r\n\r\nexport class Table extends BaseComponent\r\n{\r\n data: any;\r\n filter: string | false;\r\n customFilters: any[] | null;\r\n activeCustomFilters: any;\r\n rowOffsetCount: number = 0;\r\n\r\n _currentFilter: string | undefined;\r\n _toggleColumns: boolean;\r\n _sortColumns: boolean;\r\n _resetCustomFiltersBtn: Button | null = null;\r\n _hiddenColumns: any[] = [];\r\n _paginator: Pagination | undefined;\r\n _showSelectedNumber: boolean;\r\n\r\n private _centered: any;\r\n get centered(): any\r\n {\r\n return this._centered;\r\n }\r\n set centered( v: any )\r\n {\r\n this._setCentered( v );\r\n }\r\n\r\n private _rowsPerPage: number = -1;\r\n get rowsPerPage(): any\r\n {\r\n return this._rowsPerPage;\r\n }\r\n set rowsPerPage( v: any )\r\n {\r\n this._setRowsPerPage( v );\r\n }\r\n\r\n constructor( name: string, data: any, options: any = {} )\r\n {\r\n if ( !data )\r\n {\r\n throw ( 'Data is needed to create a table!' );\r\n }\r\n\r\n super( ComponentType.TABLE, name, null, options );\r\n\r\n this.onResize = ( rect ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n container.style.width = `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n const container = document.createElement( 'div' );\r\n container.className = 'lextable';\r\n this.root.appendChild( container );\r\n\r\n this._centered = options.centered ?? false;\r\n if ( this._centered === true )\r\n {\r\n container.classList.add( 'centered' );\r\n }\r\n\r\n this.data = data;\r\n this.filter = options.filter ?? false;\r\n this.customFilters = options.customFilters;\r\n this.activeCustomFilters = {};\r\n this._toggleColumns = options.toggleColumns ?? false;\r\n this._sortColumns = options.sortColumns ?? true;\r\n this._showSelectedNumber = options.showSelectedNumber ?? true;\r\n this._currentFilter = options.filterValue;\r\n this._hiddenColumns = options.hiddenColumns ?? [];\r\n\r\n data.head = data.head ?? [];\r\n data.body = data.body ?? [];\r\n data.checkMap = {};\r\n data.colVisibilityMap = {};\r\n data.head.forEach( ( colName: any, index: number ) => {\r\n const idx = this._hiddenColumns.indexOf( colName );\r\n const visible = ( !this._toggleColumns ) || ( idx === -1 );\r\n data.colVisibilityMap[index] = visible;\r\n } );\r\n\r\n if ( options.pagination ?? false )\r\n {\r\n this._rowsPerPage = options.rowsPerPage ?? 12;\r\n\r\n this._paginator = new Pagination( {\r\n pages: this._getNumPages(),\r\n itemsPerPage: this._rowsPerPage,\r\n allowChangeItemsPerPage: options.allowChangeItemsPerPage ?? true,\r\n onChange: this._onChangePage.bind( this ),\r\n onItemsPerPageChange: ( v: number ) => {\r\n this.rowsPerPage = v;\r\n }\r\n } );\r\n }\r\n\r\n const getDate = ( text: string ): Date | null => {\r\n // Match DD/MM/YYYY or DD-MM-YYYY\r\n const m = text.match( /^(\\d{1,2})[\\/-](\\d{1,2})[\\/-](\\d{2}|\\d{4})$/ );\r\n if ( !m ) return null;\r\n\r\n let day = Number( m[1] );\r\n let month = Number( m[2] ) - 1; // JS months: 0-11\r\n let year = Number( m[3] );\r\n\r\n // Convert YY → 20YY\r\n if ( year < 100 ) year += 2000;\r\n\r\n const d = new Date( year, month, day );\r\n\r\n // Validate (to avoid things like 32/13/2025 becoming valid)\r\n if ( d.getFullYear() !== year || d.getMonth() !== month || d.getDate() !== day )\r\n {\r\n return null;\r\n }\r\n\r\n return d;\r\n };\r\n\r\n const compareFn = ( idx: number, order: number, a: any, b: any ) => {\r\n const va = a[idx];\r\n const vb = b[idx];\r\n\r\n // Date sort\r\n const da = getDate( va );\r\n const db = getDate( vb );\r\n if ( da && db )\r\n {\r\n if ( da.getTime() < db.getTime() ) return -order;\r\n if ( da.getTime() > db.getTime() ) return order;\r\n return 0;\r\n }\r\n\r\n // Number sort\r\n const na = Number( va );\r\n const nb = Number( vb );\r\n if ( !isNaN( na ) && !isNaN( nb ) )\r\n {\r\n if ( na < nb ) return -order;\r\n if ( na > nb ) return order;\r\n return 0;\r\n }\r\n\r\n // String sort\r\n if ( va < vb ) return -order;\r\n else if ( va > vb ) return order;\r\n return 0;\r\n };\r\n\r\n const sortFn = ( idx: number, sign: number ) => {\r\n data.body = data.body.sort( compareFn.bind( this, idx, sign ) );\r\n this.refresh();\r\n };\r\n\r\n const that = this;\r\n\r\n // Append header\r\n if ( this.filter || this.customFilters || this._toggleColumns )\r\n {\r\n const headerContainer = LX.makeContainer( [ '100%', 'auto' ], 'flex flex-row mb-2' );\r\n\r\n if ( this.filter )\r\n {\r\n const filterOptions = LX.deepCopy( options );\r\n filterOptions.placeholder = `Filter ${this.filter}...`;\r\n filterOptions.skipComponent = true;\r\n filterOptions.trigger = 'input';\r\n filterOptions.inputClass = 'outline';\r\n\r\n let filter = new TextInput( null, this._currentFilter ?? '', ( v: string ) => {\r\n this._currentFilter = v;\r\n this.refresh();\r\n }, filterOptions );\r\n\r\n headerContainer.appendChild( filter.root );\r\n }\r\n\r\n if ( this.customFilters !== null )\r\n {\r\n const icon = LX.makeIcon( 'CirclePlus', { svgClass: 'sm' } );\r\n const separatorHtml =\r\n `<div class=\"lexcontainer border-right self-center mx-1\" style=\"width: 1px; height: 70%;\"></div>`;\r\n\r\n for ( let f of this.customFilters )\r\n {\r\n f.component = new Button( null, icon.innerHTML + f.name, ( v: any ) => {\r\n const spanName = f.component.root.querySelector( 'span' );\r\n\r\n if ( f.options )\r\n {\r\n const menuOptions = f.options.map( ( colName: string, idx: number ) => {\r\n const item = {\r\n name: colName,\r\n checked: !!this.activeCustomFilters[colName],\r\n callback: ( key: string, v: boolean, dom: HTMLElement ) => {\r\n if ( v ) this.activeCustomFilters[key] = f.name;\r\n else\r\n {\r\n delete this.activeCustomFilters[key];\r\n }\r\n const activeFilters = Object.keys( this.activeCustomFilters ).filter( ( k ) =>\r\n this.activeCustomFilters[k] == f.name\r\n );\r\n const filterBadgesHtml = activeFilters.reduce( ( acc, key ) =>\r\n acc += LX.badge( key, 'bg-tertiary fg-secondary text-sm border-0' ), '' );\r\n spanName.innerHTML = icon.innerHTML + f.name\r\n + ( activeFilters.length ? separatorHtml : '' ) + filterBadgesHtml;\r\n this.refresh();\r\n }\r\n };\r\n return item;\r\n } );\r\n LX.addDropdownMenu( f.component.root, menuOptions, { side: 'bottom', align: 'start' } );\r\n }\r\n else if ( f.type == 'range' )\r\n {\r\n console.assert( f.min != undefined && f.max != undefined,\r\n 'Range filter needs min and max values!' );\r\n const container = LX.makeContainer( [ '240px', 'auto' ], 'text-md' );\r\n const panel: any = new LX.Panel();\r\n LX.makeContainer( [ '100%', 'auto' ], 'px-3 p-2 pb-0 text-md font-medium', f.name,\r\n container );\r\n\r\n f.start = f.start ?? f.min;\r\n f.end = f.end ?? f.max;\r\n\r\n panel.refresh = () => {\r\n panel.clear();\r\n panel.sameLine( 2, 'justify-center' );\r\n panel.addNumber( null, f.start, ( v: number ) => {\r\n f.start = v;\r\n const inUse = f.start != f.min || f.end != f.max;\r\n spanName.innerHTML = icon.innerHTML + f.name + ( inUse\r\n ? separatorHtml\r\n + LX.badge( `${f.start} - ${f.end} ${f.units ?? ''}`,\r\n 'bg-tertiary fg-secondary text-sm border-0' )\r\n : '' );\r\n if ( inUse )\r\n {\r\n this._resetCustomFiltersBtn?.root.classList.remove( 'hidden' );\r\n }\r\n this.refresh();\r\n }, { skipSlider: true, min: f.min, max: f.max, step: f.step, units: f.units } );\r\n panel.addNumber( null, f.end, ( v: number ) => {\r\n f.end = v;\r\n const inUse = f.start != f.min || f.end != f.max;\r\n spanName.innerHTML = icon.innerHTML + f.name\r\n + ( inUse\r\n ? separatorHtml\r\n + LX.badge( `${f.start} - ${f.end} ${f.units ?? ''}`,\r\n 'bg-tertiary fg-secondary text-sm border-0' )\r\n : '' );\r\n if ( inUse )\r\n {\r\n this._resetCustomFiltersBtn?.root.classList.remove( 'hidden' );\r\n }\r\n this.refresh();\r\n }, { skipSlider: true, min: f.min, max: f.max, step: f.step, units: f.units } );\r\n panel.addButton( null, 'Reset', () => {\r\n f.start = f.min;\r\n f.end = f.max;\r\n spanName.innerHTML = icon.innerHTML + f.name;\r\n panel.refresh();\r\n this.refresh();\r\n }, { buttonClass: 'contrast' } );\r\n };\r\n panel.refresh();\r\n container.appendChild( panel.root );\r\n new Popover( f.component.root, [ container ], { side: 'bottom' } );\r\n }\r\n else if ( f.type == 'date' )\r\n {\r\n const container = LX.makeContainer( [ 'auto', 'auto' ], 'text-md' );\r\n const panel: any = new LX.Panel();\r\n LX.makeContainer( [ '100%', 'auto' ], 'px-3 p-2 pb-0 text-md font-medium', f.name,\r\n container );\r\n\r\n panel.refresh = () => {\r\n panel.clear();\r\n\r\n // Generate default value once the filter is used\r\n if ( !f.default )\r\n {\r\n const date = new Date();\r\n const todayStringDate = `${date.getDate()}/${\r\n date.getMonth() + 1\r\n }/${date.getFullYear()}`;\r\n f.default = [ todayStringDate, todayStringDate ];\r\n }\r\n\r\n const calendar = new CalendarRange( f.value ?? f.default, {\r\n onChange: ( dateRange: any ) => {\r\n f.value = dateRange;\r\n spanName.innerHTML = icon.innerHTML + f.name\r\n + ( separatorHtml\r\n + LX.badge( `${calendar.getFullDate()}`,\r\n 'bg-tertiary fg-secondary text-sm border-0' ) );\r\n this._resetCustomFiltersBtn?.root.classList.remove( 'hidden' );\r\n this.refresh();\r\n }\r\n } );\r\n\r\n panel.attach( calendar );\r\n };\r\n panel.refresh();\r\n container.appendChild( panel.root );\r\n new Popover( f.component.root, [ container ], { side: 'bottom' } );\r\n }\r\n }, { buttonClass: 'px-2 primary dashed' } );\r\n headerContainer.appendChild( f.component.root );\r\n }\r\n\r\n this._resetCustomFiltersBtn = new Button( null, 'resetButton', () => {\r\n this.activeCustomFilters = {};\r\n this._resetCustomFiltersBtn?.root.classList.add( 'hidden' );\r\n for ( let f of this.customFilters ?? [] )\r\n {\r\n f.component.root.querySelector( 'span' ).innerHTML = icon.innerHTML + f.name;\r\n if ( f.type == 'range' )\r\n {\r\n f.start = f.min;\r\n f.end = f.max;\r\n }\r\n else if ( f.type == 'date' )\r\n {\r\n delete f.value;\r\n }\r\n }\r\n this.refresh();\r\n }, { title: 'Reset filters', tooltip: true, icon: 'X' } );\r\n headerContainer.appendChild( this._resetCustomFiltersBtn?.root );\r\n this._resetCustomFiltersBtn?.root.classList.add( 'hidden' );\r\n }\r\n\r\n if ( this._toggleColumns )\r\n {\r\n const icon = LX.makeIcon( 'Settings2' );\r\n const toggleColumnsBtn = new Button( 'toggleColumnsBtn', icon.innerHTML + 'View',\r\n ( value: any, e: any ) => {\r\n const menuOptions = data.head.map( ( colName: string, idx: number ) => {\r\n const item: any = {\r\n name: colName,\r\n icon: 'Check',\r\n callback: () => {\r\n data.colVisibilityMap[idx] = !data.colVisibilityMap[idx];\r\n const cells = table.querySelectorAll(\r\n `tr > *:nth-child(${idx + this.rowOffsetCount + 1})`\r\n );\r\n cells.forEach( ( cell: any ) => {\r\n cell.style.display = ( cell.style.display === 'none' ) ? '' : 'none';\r\n } );\r\n }\r\n };\r\n if ( !data.colVisibilityMap[idx] ) delete item.icon;\r\n return item;\r\n } );\r\n LX.addDropdownMenu( e.target, menuOptions, { side: 'bottom', align: 'end' } );\r\n }, { hideName: true } );\r\n headerContainer.appendChild( toggleColumnsBtn.root );\r\n toggleColumnsBtn.root.style.marginLeft = 'auto';\r\n }\r\n\r\n container.appendChild( headerContainer );\r\n }\r\n\r\n const table = document.createElement( 'table' );\r\n LX.addClass( table, options.tableClass );\r\n container.appendChild( table );\r\n\r\n this.refresh = () => {\r\n this._currentFilter = this._currentFilter ?? '';\r\n\r\n table.innerHTML = '';\r\n\r\n this.rowOffsetCount = 0;\r\n\r\n // Head\r\n {\r\n const head = document.createElement( 'thead' );\r\n head.className = 'lextablehead';\r\n table.appendChild( head );\r\n\r\n const hrow = document.createElement( 'tr' );\r\n\r\n if ( options.sortable ?? false )\r\n {\r\n const th = document.createElement( 'th' );\r\n th.style.width = '0px';\r\n hrow.appendChild( th );\r\n this.rowOffsetCount++;\r\n }\r\n\r\n if ( options.selectable ?? false )\r\n {\r\n const th = document.createElement( 'th' );\r\n th.style.width = '0px';\r\n const input = document.createElement( 'input' );\r\n input.type = 'checkbox';\r\n input.className = 'lexcheckbox accent';\r\n input.checked = data.checkMap[':root'] ?? false;\r\n th.appendChild( input );\r\n\r\n input.addEventListener( 'change', function()\r\n {\r\n data.checkMap[':root'] = this.checked;\r\n\r\n const body: any = table.querySelector( 'tbody' );\r\n for ( const el of body.childNodes )\r\n {\r\n const rowId = el.getAttribute( 'rowId' );\r\n if ( !rowId ) continue;\r\n data.checkMap[rowId] = this.checked;\r\n el.querySelector( \"input[type='checkbox']\" ).checked = this.checked;\r\n }\r\n\r\n const sRows = that.getSelectedRows();\r\n LX.emitSignal( '@rows_selected_changed', sRows.length );\r\n } );\r\n\r\n this.rowOffsetCount++;\r\n hrow.appendChild( th );\r\n }\r\n\r\n for ( const headData of data.head )\r\n {\r\n const th: any = document.createElement( 'th' );\r\n th.innerHTML = `<span>${headData}</span>`;\r\n th.querySelector( 'span' ).appendChild( LX.makeIcon( 'MenuArrows', { svgClass: 'sm' } ) );\r\n\r\n const idx = data.head.indexOf( headData );\r\n if ( this._centered?.indexOf\r\n && ( ( this._centered.indexOf( idx ) > -1 ) || ( this._centered.indexOf( headData ) > -1 ) ) )\r\n {\r\n th.classList.add( 'centered' );\r\n }\r\n\r\n const menuOptions: any[] = [];\r\n\r\n if ( options.columnActions )\r\n {\r\n for ( let action of options.columnActions )\r\n {\r\n if ( !action.name )\r\n {\r\n console.warn( 'Invalid column action (missing name):', action );\r\n continue;\r\n }\r\n\r\n menuOptions.push( { name: action.name, icon: action.icon, className: action.className,\r\n callback: () => {\r\n const colRows = this.data.body.map( ( row: any[] ) => [ row[idx] ] );\r\n const mustRefresh = action.callback( colRows, table );\r\n if ( mustRefresh )\r\n {\r\n this.refresh();\r\n }\r\n } } );\r\n }\r\n }\r\n\r\n if ( this._sortColumns )\r\n {\r\n if ( menuOptions.length > 0 )\r\n {\r\n menuOptions.push( null );\r\n }\r\n\r\n menuOptions.push(\r\n { name: 'Asc', icon: 'ArrowUpZA', callback: sortFn.bind( this, idx, 1 ) },\r\n { name: 'Desc', icon: 'ArrowDownZA', callback: sortFn.bind( this, idx, -1 ) }\r\n );\r\n }\r\n\r\n if ( this._toggleColumns )\r\n {\r\n if ( menuOptions.length > 0 )\r\n {\r\n menuOptions.push( null );\r\n }\r\n\r\n menuOptions.push( {\r\n name: 'Hide',\r\n icon: 'EyeOff',\r\n callback: () => {\r\n data.colVisibilityMap[idx] = false;\r\n const cells = table.querySelectorAll(\r\n `tr > *:nth-child(${idx + this.rowOffsetCount + 1})`\r\n );\r\n cells.forEach( ( c: any ) => {\r\n c.style.display = ( c.style.display === 'none' ) ? '' : 'none';\r\n } );\r\n }\r\n } );\r\n }\r\n\r\n th.addEventListener( 'click', ( e: MouseEvent ) => {\r\n if ( menuOptions.length === 0 ) return;\r\n LX.addDropdownMenu( e.target, menuOptions, { side: 'bottom', align: 'start' } );\r\n } );\r\n\r\n hrow.appendChild( th );\r\n }\r\n\r\n // Add empty header column\r\n if ( options.rowActions )\r\n {\r\n const th = document.createElement( 'th' );\r\n th.className = 'sm';\r\n hrow.appendChild( th );\r\n }\r\n\r\n head.appendChild( hrow );\r\n }\r\n\r\n // Body\r\n {\r\n const body = document.createElement( 'tbody' );\r\n body.className = 'lextablebody';\r\n table.appendChild( body );\r\n\r\n let rIdx: any = null;\r\n let eventCatched: any = false;\r\n let movePending: any = null;\r\n\r\n document.addEventListener( 'mouseup', ( e ) => {\r\n if ( rIdx === null ) return;\r\n document.removeEventListener( 'mousemove', onMove );\r\n const fromRow: any = table.rows[rIdx];\r\n fromRow.dY = 0;\r\n fromRow.classList.remove( 'dragging' );\r\n Array.from( table.rows ).forEach( ( v ) => {\r\n v.style.transform = ``;\r\n v.style.transition = `none`;\r\n } );\r\n LX.flushCss( fromRow );\r\n\r\n if ( movePending )\r\n {\r\n // Modify inner data first\r\n // Origin row should go to the target row, and the rest should be moved up/down\r\n const pageOffset = this._paginator ? ( this._paginator.page - 1 ) * this.rowsPerPage : 0;\r\n const fromIdx = rIdx - 1 + pageOffset;\r\n const targetIdx = movePending[1] - 1 + pageOffset;\r\n\r\n LX.emitSignal( '@on_table_sort', { instance: this, fromIdx, targetIdx } );\r\n\r\n const b = data.body[fromIdx];\r\n let targetOffset = 0;\r\n\r\n if ( fromIdx == targetIdx ) return;\r\n if ( fromIdx > targetIdx )\r\n { // Move up\r\n for ( let i = fromIdx; i > targetIdx; --i )\r\n {\r\n data.body[i] = data.body[i - 1];\r\n }\r\n }\r\n // Move down\r\n else\r\n {\r\n targetOffset = 1;\r\n for ( let i = fromIdx; i < targetIdx; ++i )\r\n {\r\n data.body[i] = data.body[i + 1];\r\n }\r\n }\r\n\r\n data.body[targetIdx] = b;\r\n\r\n const parent = movePending[0].parentNode;\r\n LX.insertChildAtIndex( parent, movePending[0], targetIdx + targetOffset - pageOffset );\r\n movePending = null;\r\n }\r\n\r\n rIdx = null;\r\n\r\n LX.doAsync( () => {\r\n Array.from( table.rows ).forEach( ( v ) => {\r\n v.style.transition = `transform 0.2s ease-in`;\r\n } );\r\n } );\r\n } );\r\n\r\n let onMove = ( e: MouseEvent ) => {\r\n if ( !rIdx ) return;\r\n const fromRow: any = table.rows[rIdx];\r\n fromRow.dY = fromRow.dY ?? 0;\r\n fromRow.dY += e.movementY;\r\n fromRow.style.transform = `translateY(${fromRow.dY}px)`;\r\n };\r\n\r\n const filtered = [];\r\n\r\n // Filter rows\r\n for ( let r = 0; r < data.body.length; ++r )\r\n {\r\n const bodyData = data.body[r];\r\n\r\n if ( this.filter )\r\n {\r\n const filterColIndex = data.head.indexOf( this.filter );\r\n if ( filterColIndex > -1 )\r\n {\r\n const validRowValue = LX.stripHTML( bodyData[filterColIndex] ).toLowerCase();\r\n if ( !validRowValue.includes( this._currentFilter.toLowerCase() ) )\r\n {\r\n continue;\r\n }\r\n }\r\n }\r\n\r\n if ( Object.keys( this.activeCustomFilters ).length )\r\n {\r\n let acfMap: Record<string, boolean> = {};\r\n\r\n this._resetCustomFiltersBtn?.root.classList.remove( 'hidden' );\r\n\r\n for ( let acfValue in this.activeCustomFilters )\r\n {\r\n const acfName = this.activeCustomFilters[acfValue];\r\n acfMap[acfName] = acfMap[acfName] ?? false;\r\n\r\n const filterColIndex = data.head.indexOf( acfName );\r\n if ( filterColIndex > -1 )\r\n {\r\n const cellValue = bodyData[filterColIndex];\r\n const strippedValue = LX.stripTags( cellValue ) ?? cellValue;\r\n acfMap[acfName] = acfMap[acfName] || ( strippedValue === acfValue );\r\n }\r\n }\r\n\r\n const show = Object.values( acfMap ).reduce<boolean>( ( acc, e ) => acc && e, true );\r\n if ( !show )\r\n {\r\n continue;\r\n }\r\n }\r\n\r\n // Check range/date filters\r\n if ( this.customFilters )\r\n {\r\n let acfMap: Record<string, boolean> = {};\r\n\r\n for ( let f of this.customFilters )\r\n {\r\n const acfName = f.name;\r\n\r\n if ( f.type == 'range' )\r\n {\r\n acfMap[acfName] = acfMap[acfName] ?? false;\r\n\r\n const filterColIndex = data.head.indexOf( acfName );\r\n if ( filterColIndex > -1 )\r\n {\r\n const validRowValue = parseFloat( bodyData[filterColIndex] );\r\n const min = f.start ?? f.min;\r\n const max = f.end ?? f.max;\r\n acfMap[acfName] = acfMap[acfName]\r\n || ( ( validRowValue >= min ) && ( validRowValue <= max ) );\r\n }\r\n }\r\n else if ( f.type == 'date' )\r\n {\r\n acfMap[acfName] = acfMap[acfName] ?? false;\r\n\r\n const filterColIndex = data.head.indexOf( acfName );\r\n if ( filterColIndex > -1 )\r\n {\r\n if ( !f.value )\r\n {\r\n acfMap[acfName] = true;\r\n continue;\r\n }\r\n\r\n f.value = f.value ?? f.default;\r\n\r\n const dateString = bodyData[filterColIndex];\r\n const date = LX.dateFromDateString( dateString );\r\n const minDate = LX.dateFromDateString( f.value[0] );\r\n const maxDate = LX.dateFromDateString( f.value[1] );\r\n acfMap[acfName] = acfMap[acfName] || ( ( date >= minDate ) && ( date <= maxDate ) );\r\n }\r\n }\r\n }\r\n\r\n const show = Object.values( acfMap ).reduce<boolean>( ( acc, e ) => acc && e, true );\r\n if ( !show )\r\n {\r\n continue;\r\n }\r\n }\r\n\r\n filtered.push( bodyData );\r\n }\r\n\r\n if ( this._paginator )\r\n {\r\n this._paginator.setPages( this._getNumPages( filtered.length ) );\r\n }\r\n\r\n const start = this._paginator ? ( this._paginator.page - 1 ) * this.rowsPerPage : 0;\r\n const end = this._paginator ? Math.min( start + this.rowsPerPage, filtered.length ) : filtered.length;\r\n\r\n // Render filtered rows\r\n for ( let r = start; r < end; ++r )\r\n {\r\n const bodyData = filtered[r];\r\n\r\n const idx = this.data.body.indexOf( bodyData );\r\n const row = document.createElement( 'tr' );\r\n const rowId = this._makeRowId( bodyData );\r\n row.setAttribute( 'rowId', rowId );\r\n\r\n if ( options.sortable ?? false )\r\n {\r\n const td = document.createElement( 'td' );\r\n td.style.width = '0px';\r\n const icon = LX.makeIcon( 'GripVertical' );\r\n td.appendChild( icon );\r\n\r\n icon.draggable = true;\r\n\r\n icon.addEventListener( 'dragstart', ( e: DragEvent ) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n e.stopImmediatePropagation();\r\n\r\n rIdx = row.rowIndex;\r\n row.classList.add( 'dragging' );\r\n\r\n document.addEventListener( 'mousemove', onMove );\r\n }, false );\r\n\r\n row.addEventListener( 'mouseenter', function( e: MouseEvent )\r\n {\r\n e.preventDefault();\r\n\r\n if ( rIdx != null && ( this.rowIndex != rIdx ) && ( eventCatched != this.rowIndex ) )\r\n {\r\n eventCatched = this.rowIndex;\r\n const fromRow = table.rows[rIdx];\r\n const undo = this.style.transform != ``;\r\n if ( this.rowIndex > rIdx )\r\n {\r\n movePending = [ fromRow, undo ? ( this.rowIndex - 1 ) : this.rowIndex ];\r\n this.style.transform = undo ? `` : `translateY(-${this.offsetHeight}px)`;\r\n }\r\n else\r\n {\r\n movePending = [ fromRow, undo ? ( this.rowIndex + 1 ) : ( this.rowIndex ) ];\r\n this.style.transform = undo ? `` : `translateY(${this.offsetHeight}px)`;\r\n }\r\n LX.doAsync( () => {\r\n eventCatched = false;\r\n } );\r\n }\r\n } );\r\n\r\n row.appendChild( td );\r\n }\r\n\r\n if ( options.selectable ?? false )\r\n {\r\n const td = document.createElement( 'td' );\r\n const input = document.createElement( 'input' );\r\n input.type = 'checkbox';\r\n input.className = 'lexcheckbox accent';\r\n input.checked = data.checkMap[rowId];\r\n td.appendChild( input );\r\n\r\n input.addEventListener( 'change', function()\r\n {\r\n data.checkMap[rowId] = this.checked;\r\n\r\n const headInput: any = table.querySelector( \"thead input[type='checkbox']\" );\r\n console.assert( headInput, 'Header checkbox not found!' );\r\n\r\n if ( !this.checked )\r\n {\r\n headInput.checked = data.checkMap[':root'] = false;\r\n }\r\n else\r\n {\r\n const rowInputs = Array.from(\r\n table.querySelectorAll( \"tbody input[type='checkbox']\" )\r\n );\r\n const uncheckedRowInputs = rowInputs.filter( ( i: any ) => {\r\n return !i.checked;\r\n } );\r\n if ( !uncheckedRowInputs.length )\r\n {\r\n headInput.checked = data.checkMap[':root'] = true;\r\n }\r\n }\r\n\r\n const sRows = that.getSelectedRows();\r\n LX.emitSignal( '@rows_selected_changed', sRows.length );\r\n } );\r\n\r\n row.appendChild( td );\r\n }\r\n\r\n for ( let colIdx = 0; colIdx < bodyData.length; ++colIdx )\r\n {\r\n const rowData = bodyData[colIdx];\r\n const td = document.createElement( 'td' );\r\n td.innerHTML = `${rowData}`;\r\n const headData = data.head[colIdx];\r\n if ( this._centered?.indexOf\r\n && ( ( this._centered.indexOf( colIdx ) > -1 )\r\n || ( this._centered.indexOf( headData ) > -1 ) ) )\r\n {\r\n td.classList.add( 'centered' );\r\n }\r\n\r\n row.appendChild( td );\r\n }\r\n\r\n if ( options.rowActions )\r\n {\r\n const td = document.createElement( 'td' );\r\n td.style.width = '0px';\r\n\r\n const buttons = document.createElement( 'div' );\r\n buttons.className = 'lextablebuttons';\r\n td.appendChild( buttons );\r\n\r\n for ( const action of options.rowActions )\r\n {\r\n let button = null;\r\n\r\n if ( action == 'delete' )\r\n {\r\n button = LX.makeIcon( 'Trash3', { title: 'Delete Row' } );\r\n button.addEventListener( 'click', () => {\r\n data.body.splice( idx, 1 );\r\n this.refresh();\r\n } );\r\n }\r\n else if ( action == 'menu' )\r\n {\r\n button = LX.makeIcon( 'EllipsisVertical', { title: 'Menu' } );\r\n button.addEventListener( 'click', function( e: MouseEvent )\r\n {\r\n if ( !options.onMenuAction )\r\n {\r\n return;\r\n }\r\n\r\n const menuOptions = options.onMenuAction( idx, data );\r\n console.assert( menuOptions.length, 'Add items to the Menu Action Dropdown!' );\r\n\r\n LX.addDropdownMenu( e.target, menuOptions, { side: 'bottom', align: 'end' } );\r\n } );\r\n }\r\n // custom actions\r\n else\r\n {\r\n console.assert( action.constructor == Object );\r\n button = LX.makeIcon( action.icon, { title: action.title } );\r\n\r\n if ( action.callback )\r\n {\r\n button.addEventListener( 'click', ( e: MouseEvent ) => {\r\n const mustRefresh = action.callback( idx, bodyData, table, e );\r\n if ( mustRefresh )\r\n {\r\n this.refresh();\r\n }\r\n } );\r\n }\r\n }\r\n\r\n console.assert( button );\r\n buttons.appendChild( button );\r\n }\r\n\r\n row.appendChild( td );\r\n }\r\n\r\n body.appendChild( row );\r\n }\r\n\r\n if ( options.selectable )\r\n {\r\n const sRows = this.getSelectedRows();\r\n LX.emitSignal( '@rows_selected_changed', sRows.length );\r\n }\r\n\r\n if ( body.childNodes.length == 0 )\r\n {\r\n const row = document.createElement( 'tr' );\r\n const td = document.createElement( 'td' );\r\n td.setAttribute( 'colspan', data.head.length + this.rowOffsetCount + 1 ); // +1 for rowActions\r\n td.className = 'empty-row';\r\n td.innerHTML = 'No results.';\r\n row.appendChild( td );\r\n body.appendChild( row );\r\n }\r\n }\r\n\r\n for ( const v in data.colVisibilityMap )\r\n {\r\n const idx = parseInt( v );\r\n if ( !data.colVisibilityMap[idx] )\r\n {\r\n const cells = table.querySelectorAll( `tr > *:nth-child(${idx + this.rowOffsetCount + 1})` );\r\n cells.forEach( ( c: any ) => {\r\n c.style.display = ( c.style.display === 'none' ) ? '' : 'none';\r\n } );\r\n }\r\n }\r\n };\r\n\r\n const showSelected = this._showSelectedNumber && options.selectable;\r\n\r\n // Make footer\r\n if ( showSelected || this._paginator )\r\n {\r\n const footerContainer = LX.makeContainer( [ '100%', 'auto' ], 'flex flex-row px-3 my-1 align-center', '',\r\n container );\r\n\r\n // Show num selected rows\r\n if ( showSelected )\r\n {\r\n const selectedRowsLabelContainer = LX.makeContainer( [ '100%', 'auto' ],\r\n 'flex justify-start items-center fg-secondary', '0 row(s) selected.', footerContainer );\r\n LX.addSignal( '@rows_selected_changed', ( target: HTMLElement, n: number ) => {\r\n if ( !this._showSelectedNumber ) return;\r\n selectedRowsLabelContainer.innerHTML = n === 0 ? '' : `${n ?? 0} row(s) selected.`;\r\n } );\r\n }\r\n\r\n // Pagination\r\n if ( this._paginator )\r\n {\r\n const paginationContainer = LX.makeContainer( [ '100%', 'auto' ], 'flex justify-end', '',\r\n footerContainer );\r\n paginationContainer.appendChild( this._paginator.root );\r\n }\r\n }\r\n\r\n this.refresh();\r\n\r\n LX.doAsync( this.onResize.bind( this ) );\r\n }\r\n\r\n getSelectedRows()\r\n {\r\n const selectedRows = [];\r\n\r\n for ( const row of this.data.body )\r\n {\r\n const rowId = this._makeRowId( row );\r\n if ( this.data.checkMap[rowId] === true )\r\n {\r\n selectedRows.push( row );\r\n }\r\n }\r\n\r\n return selectedRows;\r\n }\r\n\r\n _makeRowId( row: any[] )\r\n {\r\n return LX.getSupportedDOMName( row.join( '-' ) ).substr( 0, 32 );\r\n }\r\n\r\n _onChangePage( page: number )\r\n {\r\n this.refresh();\r\n }\r\n\r\n _getNumPages( total?: number )\r\n {\r\n if ( this.rowsPerPage === -1 ) return 1;\r\n total = total ?? this.data.body?.length;\r\n return Math.ceil( ( total ?? 0 ) / this.rowsPerPage );\r\n }\r\n\r\n _setRowsPerPage( n: number )\r\n {\r\n this._rowsPerPage = n;\r\n this.refresh();\r\n }\r\n\r\n _setCentered( v: any )\r\n {\r\n if ( v.constructor == Boolean )\r\n {\r\n const container = this.root.querySelector( '.lextable' );\r\n container.classList.toggle( 'centered', v );\r\n }\r\n else\r\n {\r\n // Make sure this is an array containing which columns have\r\n // to be centered\r\n v = Array.isArray( v ) ? v : [ v ];\r\n }\r\n\r\n this._centered = v;\r\n\r\n this.refresh();\r\n }\r\n}\r\n\r\nLX.Table = Table;\r\n","// TabSections.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\n\r\n/**\r\n * @class TabSections\r\n * @description TabSections Component\r\n */\r\n\r\nexport class TabSections extends BaseComponent\r\n{\r\n tabs: any[];\r\n tabDOMs: Record<string, HTMLElement>;\r\n\r\n constructor( name: string, tabs: any[], options: any = {} )\r\n {\r\n options.hideName = true;\r\n\r\n super( ComponentType.TABS, name, null, options );\r\n\r\n if ( tabs.constructor != Array )\r\n {\r\n throw ( 'Param @tabs must be an Array!' );\r\n }\r\n\r\n if ( !tabs.length )\r\n {\r\n throw ( 'Tab list cannot be empty!' );\r\n }\r\n\r\n const vertical = options.vertical ?? true;\r\n const showNames = !vertical && ( options.showNames ?? false );\r\n\r\n this.tabDOMs = {};\r\n\r\n let container = document.createElement( 'div' );\r\n container.className = 'lextabscontainer';\r\n if ( !vertical )\r\n {\r\n container.className += ' horizontal';\r\n }\r\n\r\n let tabContainer = document.createElement( 'div' );\r\n tabContainer.className = 'tabs';\r\n container.appendChild( tabContainer );\r\n this.root.appendChild( container );\r\n\r\n // Check at least 1 is selected\r\n if ( tabs.findIndex( ( e ) => e.selected === true ) < 0 )\r\n {\r\n tabs[0].selected = true;\r\n }\r\n\r\n for ( let tab of tabs )\r\n {\r\n console.assert( tab.name );\r\n let tabEl = document.createElement( 'div' );\r\n tabEl.className = 'lextab ' + ( ( tab.selected ?? false ) ? 'selected' : '' );\r\n tabEl.innerHTML = showNames ? tab.name : '';\r\n tabEl.appendChild(\r\n LX.makeIcon( tab.icon ?? 'Hash', { title: tab.name, iconClass: tab.iconClass, svgClass: tab.svgClass } )\r\n );\r\n this.tabDOMs[tab.name] = tabEl;\r\n\r\n let infoContainer = document.createElement( 'div' );\r\n infoContainer.id = tab.name.replace( /\\s/g, '' );\r\n infoContainer.className = 'components';\r\n infoContainer.toggleAttribute( 'hidden', !( tab.selected ?? false ) );\r\n container.appendChild( infoContainer );\r\n\r\n tabEl.addEventListener( 'click', ( e ) => {\r\n // Change selected tab\r\n tabContainer.querySelectorAll( '.lextab' ).forEach( ( e ) => {\r\n e.classList.remove( 'selected' );\r\n } );\r\n tabEl.classList.add( 'selected' );\r\n // Hide all tabs content\r\n container.querySelectorAll( '.components' ).forEach( ( e ) => {\r\n e.toggleAttribute( 'hidden', true );\r\n } );\r\n // Show tab content\r\n const el = container.querySelector( '#' + infoContainer.id );\r\n el?.toggleAttribute( 'hidden' );\r\n\r\n if ( tab.onSelect )\r\n {\r\n tab.onSelect( this, infoContainer );\r\n }\r\n } );\r\n\r\n tabContainer.appendChild( tabEl );\r\n\r\n if ( tab.onCreate )\r\n {\r\n // Push to tab space\r\n const creationPanel = new LX.Panel();\r\n creationPanel.queue( infoContainer );\r\n tab.onCreate.call( this, creationPanel, infoContainer );\r\n creationPanel.clearQueue();\r\n }\r\n }\r\n\r\n this.tabs = tabs;\r\n }\r\n\r\n select( name: string )\r\n {\r\n const tabEl = this.tabDOMs[name];\r\n\r\n if ( !tabEl )\r\n {\r\n return;\r\n }\r\n\r\n tabEl.click();\r\n }\r\n}\r\n\r\nLX.TabSections = TabSections;\r\n","// Tags.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\n\r\n/**\r\n * @class Tags\r\n * @description Tags Component\r\n */\r\n\r\nexport class Tags extends BaseComponent\r\n{\r\n generateTags: ( value: string[] ) => void;\r\n\r\n constructor( name: string, value: string, callback: any, options: any = {} )\r\n {\r\n let arrayValue: string[] = value.replace( /\\s/g, '' ).split( ',' );\r\n\r\n let defaultValue = LX.deepCopy( arrayValue );\r\n super( ComponentType.TAGS, name, defaultValue, options );\r\n\r\n this.options.skipDuplicates = options.skipDuplicates ?? true;\r\n\r\n this.onGetValue = () => {\r\n return LX.deepCopy( value );\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n arrayValue = [].concat( newValue );\r\n this.generateTags( arrayValue );\r\n if ( !skipCallback )\r\n {\r\n this._trigger( new IEvent( name, arrayValue, event ), callback );\r\n }\r\n };\r\n\r\n this.onResize = ( rect ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n tagsContainer.style.width = `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n // Show tags\r\n\r\n const tagsContainer = document.createElement( 'div' );\r\n tagsContainer.className = 'lextags';\r\n this.root.appendChild( tagsContainer );\r\n\r\n this.generateTags = ( value ) => {\r\n tagsContainer.innerHTML = '';\r\n\r\n for ( let i = 0; i < value.length; ++i )\r\n {\r\n const tagName = value[i];\r\n const tag = document.createElement( 'span' );\r\n tag.className = 'lextag';\r\n tag.innerHTML = tagName;\r\n\r\n const removeButton = LX.makeIcon( 'X', { svgClass: 'sm' } );\r\n tag.appendChild( removeButton );\r\n\r\n removeButton.addEventListener( 'click', ( e: MouseEvent ) => {\r\n tag.remove();\r\n value.splice( value.indexOf( tagName ), 1 );\r\n this.set( value, false, e );\r\n } );\r\n\r\n tagsContainer.appendChild( tag );\r\n }\r\n\r\n let tagInput = document.createElement( 'input' );\r\n tagInput.value = '';\r\n tagInput.placeholder = 'Add tag...';\r\n tagsContainer.appendChild( tagInput );\r\n\r\n tagInput.onkeydown = ( e ) => {\r\n if ( e.key == ' ' || e.key == 'Enter' )\r\n {\r\n const val = tagInput.value.replace( /\\s/g, '' );\r\n e.preventDefault();\r\n if ( !val.length || ( options.skipDuplicates && value.indexOf( val ) > -1 ) )\r\n {\r\n return;\r\n }\r\n value.push( val );\r\n this.set( value, false, e );\r\n tagsContainer.querySelector( 'input' )?.focus(); // generateTags creates a new tagInput instance\r\n }\r\n };\r\n };\r\n\r\n this.generateTags( arrayValue );\r\n\r\n LX.doAsync( this.onResize.bind( this ) );\r\n }\r\n}\r\n\r\nLX.Tags = Tags;\r\n","// TextArea.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\n\r\n/**\r\n * @class TextArea\r\n * @description TextArea Component\r\n */\r\n\r\nexport class TextArea extends BaseComponent\r\n{\r\n constructor( name: string | null, value: string, callback: any, options: any = {} )\r\n {\r\n super( ComponentType.TEXTAREA, name, value, options );\r\n\r\n this.onGetValue = () => {\r\n return value;\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n wValue.value = value = newValue;\r\n\r\n if ( !skipCallback )\r\n {\r\n this._trigger( new IEvent( name, newValue, event ), callback );\r\n }\r\n };\r\n\r\n this.onResize = ( rect ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n container.style.width = options.inputWidth ?? `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n let container = document.createElement( 'div' );\r\n container.className = 'lextextarea';\r\n container.style.display = 'flex';\r\n this.root.appendChild( container );\r\n\r\n let wValue = document.createElement( 'textarea' );\r\n wValue.value = value ?? '';\r\n wValue.className = options.inputClass ?? '';\r\n wValue.style.textAlign = options.float ?? '';\r\n Object.assign( wValue.style, options.style ?? {} );\r\n\r\n if ( options.fitHeight ?? false )\r\n {\r\n wValue.classList.add( 'size-content' );\r\n }\r\n\r\n if ( !( options.resize ?? true ) )\r\n {\r\n wValue.classList.add( 'resize-none' );\r\n }\r\n\r\n container.appendChild( wValue );\r\n\r\n if ( options.disabled ?? false )\r\n {\r\n this.disabled = true;\r\n wValue.setAttribute( 'disabled', 'true' );\r\n }\r\n\r\n if ( options.placeholder )\r\n {\r\n wValue.setAttribute( 'placeholder', options.placeholder );\r\n }\r\n\r\n const trigger = options.trigger ?? 'default';\r\n\r\n if ( trigger == 'default' )\r\n {\r\n wValue.addEventListener( 'keyup', function( e )\r\n {\r\n if ( e.key == 'Enter' )\r\n {\r\n wValue.blur();\r\n }\r\n } );\r\n\r\n wValue.addEventListener( 'focusout', ( e: any ) => {\r\n this.set( e.target?.value, false, e );\r\n } );\r\n }\r\n else if ( trigger == 'input' )\r\n {\r\n wValue.addEventListener( 'input', ( e: any ) => {\r\n this.set( e.target?.value, false, e );\r\n } );\r\n }\r\n\r\n if ( options.icon )\r\n {\r\n const icon = LX.makeIcon( options.icon, { iconClass: 'absolute z-1 ml-2', svgClass: 'sm' } );\r\n container.appendChild( icon );\r\n }\r\n\r\n LX.doAsync( () => {\r\n container.style.height = options.height ?? '';\r\n this.onResize();\r\n }, 10 );\r\n }\r\n}\r\n\r\nLX.TextArea = TextArea;\r\n","// Title.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\n\r\n/**\r\n * @class Title\r\n * @description Title Component\r\n */\r\n\r\nexport class Title extends BaseComponent\r\n{\r\n constructor( name: string, options: any = {} )\r\n {\r\n console.assert( name.length !== 0, \"Can't create Title Component without text!\" );\r\n\r\n // Note: Titles are not registered in Panel.components by now\r\n super( ComponentType.TITLE, null, null, options );\r\n\r\n this.root.className = `lextitle ${this.root.className}`;\r\n\r\n if ( options.icon )\r\n {\r\n let icon = LX.makeIcon( options.icon, { iconClass: 'mr-2' } );\r\n icon.querySelector( 'svg' ).style.color = options.iconColor || '';\r\n this.root.appendChild( icon );\r\n }\r\n\r\n let text = document.createElement( 'span' );\r\n text.innerText = name;\r\n this.root.appendChild( text );\r\n\r\n Object.assign( this.root.style, options.style ?? {} );\r\n\r\n if ( options.link != undefined )\r\n {\r\n let linkDom = document.createElement( 'a' );\r\n linkDom.innerText = name;\r\n linkDom.href = options.link;\r\n linkDom.target = options.target ?? '';\r\n linkDom.className = 'lextitle link';\r\n Object.assign( linkDom.style, options.style ?? {} );\r\n this.root.replaceWith( linkDom );\r\n }\r\n }\r\n}\r\n\r\nLX.Title = Title;\r\n","// Toggle.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\n\r\n/**\r\n * @class Toggle\r\n * @description Toggle Component\r\n */\r\n\r\nexport class Toggle extends BaseComponent\r\n{\r\n constructor( name: string, value: boolean, callback: any, options: any = {} )\r\n {\r\n if ( !name && !options.label )\r\n {\r\n throw ( 'Set Component Name or at least a label!' );\r\n }\r\n\r\n super( ComponentType.TOGGLE, name, value, options );\r\n\r\n this.onGetValue = () => {\r\n return toggle.checked;\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n if ( newValue == value )\r\n {\r\n return;\r\n }\r\n\r\n toggle.checked = value = newValue;\r\n\r\n // Update suboptions menu\r\n this.root.querySelector( '.lextogglesubmenu' )?.toggleAttribute( 'hidden', !newValue );\r\n\r\n if ( !skipCallback )\r\n {\r\n this._trigger( new IEvent( name, newValue, event ), callback );\r\n }\r\n };\r\n\r\n this.onResize = ( rect ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n container.style.width = options.inputWidth ?? `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n var container = document.createElement( 'div' );\r\n container.className = 'lextogglecont';\r\n this.root.appendChild( container );\r\n\r\n let toggle: any = document.createElement( 'input' );\r\n toggle.type = 'checkbox';\r\n toggle.className = 'lextoggle ' + ( options.className ?? '' );\r\n toggle.checked = value;\r\n toggle.iValue = value;\r\n toggle.disabled = options.disabled ?? false;\r\n container.appendChild( toggle );\r\n\r\n let valueName = document.createElement( 'span' );\r\n valueName.className = 'toggletext';\r\n valueName.innerHTML = options.label ?? 'On';\r\n container.appendChild( valueName );\r\n\r\n toggle.addEventListener( 'change', ( e: InputEvent ) => {\r\n this.set( toggle.checked, false, e );\r\n } );\r\n\r\n if ( options.suboptions )\r\n {\r\n let suboptions = document.createElement( 'div' );\r\n suboptions.className = 'lextogglesubmenu';\r\n suboptions.toggleAttribute( 'hidden', !toggle.checked );\r\n\r\n const suboptionsPanel = new LX.Panel();\r\n suboptionsPanel.queue( suboptions );\r\n options.suboptions.call( this, suboptionsPanel );\r\n suboptionsPanel.clearQueue();\r\n\r\n this.root.appendChild( suboptions );\r\n }\r\n\r\n LX.doAsync( this.onResize.bind( this ) );\r\n }\r\n}\r\n\r\nLX.Toggle = Toggle;\r\n","// Vector.ts @jxarco\r\n\r\nimport { IEvent } from './../core/Event';\r\nimport { LX } from './../core/Namespace';\r\nimport { BaseComponent, ComponentType } from './BaseComponent';\r\nimport { Button } from './Button';\r\n\r\n/**\r\n * @class Vector\r\n * @description Vector Component\r\n */\r\n\r\nexport class Vector extends BaseComponent\r\n{\r\n setLimits: ( newMin: number | null, newMax: number | null, newStep: number | null ) => void;\r\n\r\n constructor( numComponents: number, name: string, value: number[], callback: any, options: any = {} )\r\n {\r\n numComponents = LX.clamp( numComponents, 2, 4 );\r\n value = value ?? new Array( numComponents ).fill( 0 );\r\n\r\n super( ComponentType.VECTOR, name, LX.deepCopy( value ), options );\r\n\r\n this.onGetValue = () => {\r\n let inputs = this.root.querySelectorAll( \"input[type='number']\" );\r\n let value = [];\r\n for ( var v of inputs )\r\n {\r\n value.push( +v.value );\r\n }\r\n return value;\r\n };\r\n\r\n this.onSetValue = ( newValue, skipCallback, event ) => {\r\n if ( vectorInputs.length != newValue.length )\r\n {\r\n console.error( 'Input length does not match vector length.' );\r\n return;\r\n }\r\n\r\n for ( let i = 0; i < vectorInputs.length; ++i )\r\n {\r\n let vecValue = newValue[i];\r\n vecValue = LX.clamp( vecValue, +vectorInputs[i].min, +vectorInputs[i].max );\r\n vecValue = LX.round( vecValue, options.precision ) ?? 0;\r\n vectorInputs[i].value = value[i] = vecValue;\r\n }\r\n\r\n if ( !skipCallback )\r\n {\r\n this._trigger( new IEvent( name, value, event ), callback );\r\n }\r\n };\r\n\r\n this.onResize = ( rect ) => {\r\n const realNameWidth = this.root.domName?.style.width ?? '0px';\r\n container.style.width = `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n this.setLimits = ( newMin, newMax, newStep ) => {};\r\n\r\n const vectorInputs: any[] = [];\r\n\r\n var container = document.createElement( 'div' );\r\n container.className = 'lexvector';\r\n this.root.appendChild( container );\r\n\r\n this.disabled = options.disabled ?? false;\r\n const that = this;\r\n\r\n for ( let i = 0; i < numComponents; ++i )\r\n {\r\n let box = document.createElement( 'div' );\r\n box.className = 'vecbox';\r\n box.innerHTML = \"<span class='\" + LX.Panel.VECTOR_COMPONENTS[i] + \"'></span>\";\r\n\r\n let vecinput: any = document.createElement( 'input' );\r\n vecinput.className = 'vecinput v' + numComponents;\r\n vecinput.min = options.min ?? -1e24;\r\n vecinput.max = options.max ?? 1e24;\r\n vecinput.step = options.step ?? 'any';\r\n vecinput.type = 'number';\r\n vecinput.id = 'vec' + numComponents + '_' + LX.guidGenerator();\r\n vecinput.idx = i;\r\n vectorInputs[i] = vecinput;\r\n box.appendChild( vecinput );\r\n\r\n if ( value[i].constructor == Number )\r\n {\r\n value[i] = LX.clamp( value[i], +vecinput.min, +vecinput.max );\r\n value[i] = LX.round( value[i], options.precision );\r\n }\r\n\r\n vecinput.value = vecinput.iValue = value[i];\r\n\r\n const dragIcon = LX.makeIcon( 'MoveVertical', { iconClass: 'drag-icon hidden-opacity', svgClass: 'sm' } );\r\n box.appendChild( dragIcon );\r\n\r\n if ( this.disabled )\r\n {\r\n vecinput.disabled = true;\r\n }\r\n\r\n // Add wheel input\r\n vecinput.addEventListener( 'wheel', function( e: WheelEvent )\r\n {\r\n e.preventDefault();\r\n if ( vecinput !== document.activeElement )\r\n {\r\n return;\r\n }\r\n let mult = options.step ?? 1;\r\n if ( e.shiftKey ) mult = 10;\r\n else if ( e.altKey ) mult = 0.1;\r\n\r\n if ( lockerButton.locked )\r\n {\r\n for ( let v of vectorInputs )\r\n {\r\n v.value = LX.round( +v.valueAsNumber - mult * ( e.deltaY > 0 ? 1 : -1 ), options.precision );\r\n BaseComponent._dispatchEvent( v, 'change' );\r\n }\r\n }\r\n else\r\n {\r\n vecinput.value = LX.round( +vecinput.valueAsNumber - mult * ( e.deltaY > 0 ? 1 : -1 ),\r\n options.precision );\r\n BaseComponent._dispatchEvent( vecinput, 'change' );\r\n }\r\n }, { passive: false } );\r\n\r\n vecinput.addEventListener( 'change', ( e: any ) => {\r\n if ( isNaN( e.target.value ) )\r\n {\r\n return;\r\n }\r\n\r\n let val = LX.clamp( e.target.value, +vecinput.min, +vecinput.max );\r\n val = LX.round( val, options.precision );\r\n\r\n if ( lockerButton.locked )\r\n {\r\n for ( let v of vectorInputs )\r\n {\r\n v.value = val;\r\n value[v.idx] = val;\r\n }\r\n }\r\n else\r\n {\r\n vecinput.value = val;\r\n value[e.target.idx] = val;\r\n }\r\n\r\n this.set( value, false, e );\r\n }, false );\r\n\r\n // Add drag input\r\n\r\n function innerMouseDown( e: MouseEvent )\r\n {\r\n if ( ( document.activeElement == vecinput ) || ( e.button != LX.MOUSE_LEFT_CLICK ) )\r\n {\r\n return;\r\n }\r\n\r\n var doc = that.root.ownerDocument;\r\n doc.addEventListener( 'mousemove', innerMouseMove );\r\n doc.addEventListener( 'mouseup', innerMouseUp );\r\n document.body.classList.add( 'noevents' );\r\n dragIcon.classList.remove( 'hidden-opacity' );\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n\r\n if ( !document.pointerLockElement )\r\n {\r\n box.requestPointerLock();\r\n }\r\n\r\n if ( options.onPress )\r\n {\r\n options.onPress.bind( vecinput )( e, vecinput );\r\n }\r\n }\r\n\r\n function innerMouseMove( e: MouseEvent )\r\n {\r\n let dt = -e.movementY;\r\n\r\n if ( dt != 0 )\r\n {\r\n let mult = options.step ?? 1;\r\n if ( e.shiftKey ) mult = 10;\r\n else if ( e.altKey ) mult = 0.1;\r\n\r\n if ( lockerButton.locked )\r\n {\r\n for ( let v of vectorInputs )\r\n {\r\n v.value = LX.round( +v.valueAsNumber + mult * dt, options.precision );\r\n BaseComponent._dispatchEvent( v, 'change' );\r\n }\r\n }\r\n else\r\n {\r\n vecinput.value = LX.round( +vecinput.valueAsNumber + mult * dt, options.precision );\r\n BaseComponent._dispatchEvent( vecinput, 'change' );\r\n }\r\n }\r\n\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n\r\n function innerMouseUp( e: MouseEvent )\r\n {\r\n var doc = that.root.ownerDocument;\r\n doc.removeEventListener( 'mousemove', innerMouseMove );\r\n doc.removeEventListener( 'mouseup', innerMouseUp );\r\n document.body.classList.remove( 'noevents' );\r\n dragIcon.classList.add( 'hidden-opacity' );\r\n\r\n if ( document.pointerLockElement )\r\n {\r\n document.exitPointerLock();\r\n }\r\n\r\n if ( options.onRelease )\r\n {\r\n options.onRelease.bind( vecinput )( e, vecinput );\r\n }\r\n }\r\n\r\n box.addEventListener( 'mousedown', innerMouseDown );\r\n container.appendChild( box );\r\n }\r\n\r\n // Method to change min, max, step parameters\r\n if ( options.min !== undefined || options.max !== undefined )\r\n {\r\n this.setLimits = ( newMin, newMax, newStep ) => {\r\n for ( let v of vectorInputs )\r\n {\r\n v.min = newMin ?? v.min;\r\n v.max = newMax ?? v.max;\r\n v.step = newStep ?? v.step;\r\n }\r\n\r\n this.set( value, true );\r\n };\r\n }\r\n\r\n const lockerButton: any = new Button( null, '', ( swapValue: boolean ) => {\r\n lockerButton.locked = swapValue;\r\n }, { title: 'Lock', icon: 'LockOpen', swap: 'Lock', buttonClass: 'no-h bg-none p-0' } );\r\n container.appendChild( lockerButton.root );\r\n\r\n LX.doAsync( this.onResize.bind( this ) );\r\n }\r\n}\r\n\r\nLX.Vector = Vector;\r\n","// Branch.ts @jxarco\r\n\r\nimport { ContextMenu } from '../components/ContextMenu';\r\nimport { LX } from './Namespace';\r\nimport { Panel } from './Panel';\r\n\r\n/**\r\n * @class Branch\r\n */\r\n\r\nexport class Branch\r\n{\r\n name: string;\r\n components: any[];\r\n closed: boolean;\r\n\r\n root: any;\r\n content: any;\r\n grabber: any;\r\n panel: Panel | null;\r\n\r\n onclick: () => void;\r\n oncontextmenu: ( e: any ) => void;\r\n\r\n constructor( name: string, options: any = {} )\r\n {\r\n this.name = name;\r\n\r\n var root = document.createElement( 'div' );\r\n root.className = 'lexbranch';\r\n if ( options.id )\r\n {\r\n root.id = options.id;\r\n }\r\n if ( options.className )\r\n {\r\n root.className += ' ' + options.className;\r\n }\r\n\r\n root.style.margin = '0 auto';\r\n\r\n var that = this;\r\n\r\n this.closed = options.closed ?? false;\r\n this.root = root;\r\n this.components = [];\r\n this.panel = null;\r\n\r\n // Create element\r\n const title: any = document.createElement( 'div' );\r\n title.className = 'lexbranchtitle';\r\n\r\n if ( options.icon )\r\n {\r\n const branchIcon = LX.makeIcon( options.icon, { iconClass: 'mr-2' } );\r\n title.appendChild( branchIcon );\r\n }\r\n\r\n title.innerHTML += name || 'Branch';\r\n\r\n const collapseIcon = LX.makeIcon( 'Right', { iconClass: 'switch-branch-button', svgClass: 'sm' } );\r\n title.appendChild( collapseIcon );\r\n\r\n root.appendChild( title );\r\n\r\n var branchContent = document.createElement( 'div' );\r\n branchContent.id = name.replace( /\\s/g, '' );\r\n branchContent.className = 'lexbranchcontent';\r\n root.appendChild( branchContent );\r\n this.content = branchContent;\r\n\r\n this._addBranchSeparator();\r\n\r\n if ( this.closed )\r\n {\r\n title.classList.add( 'closed' );\r\n root.classList.add( 'closed' );\r\n this.grabber.setAttribute( 'hidden', true );\r\n LX.doAsync( () => {\r\n this.content.setAttribute( 'hidden', true );\r\n }, 10 );\r\n }\r\n\r\n this.onclick = function()\r\n {\r\n // e.stopPropagation();\r\n title.classList.toggle( 'closed' );\r\n title.parentElement.classList.toggle( 'closed' );\r\n\r\n that.content.toggleAttribute( 'hidden' );\r\n that.grabber.toggleAttribute( 'hidden' );\r\n\r\n LX.emitSignal( '@on_branch_closed', title.classList.contains( 'closed' ) );\r\n };\r\n\r\n this.oncontextmenu = function( e: any )\r\n {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if ( title.parentElement.classList.contains( 'dialog' ) )\r\n {\r\n return;\r\n }\r\n\r\n LX.addContextMenu( 'Dock', e, ( m: ContextMenu ) => {\r\n e.preventDefault();\r\n m.add( 'Floating', that._onMakeFloating.bind( that ) );\r\n }, { icon: 'WindowRestore' } );\r\n };\r\n\r\n title.addEventListener( 'click', this.onclick );\r\n title.addEventListener( 'contextmenu', this.oncontextmenu );\r\n }\r\n\r\n _onMakeFloating()\r\n {\r\n const dialog = new LX.Dialog( this.name, ( p: Panel ) => {\r\n // Add components\r\n for ( let w of this.components )\r\n {\r\n p.root.appendChild( w.root );\r\n }\r\n }, { dockable: true } );\r\n\r\n const childIndex = Array.from( this.root.parentElement.childNodes ).indexOf( this.root );\r\n console.assert( childIndex >= 0, 'Branch not found!' );\r\n\r\n dialog.branchData = {\r\n name: this.name,\r\n components: this.components,\r\n closed: this.closed,\r\n panel: this.panel,\r\n childIndex\r\n };\r\n\r\n this.root.remove();\r\n }\r\n\r\n _addBranchSeparator()\r\n {\r\n const element = document.createElement( 'div' );\r\n element.className = 'lexcomponentseparator';\r\n element.style.width = '100%';\r\n element.style.background = 'none';\r\n\r\n const grabber = document.createElement( 'div' );\r\n grabber.innerHTML = '▾';\r\n element.appendChild( grabber );\r\n\r\n LX.doAsync( () => {\r\n grabber.style.marginLeft = ( ( parseFloat( LX.DEFAULT_NAME_WIDTH ) / 100.0 ) * this.content.offsetWidth )\r\n + 'px';\r\n }, 10 );\r\n\r\n const line = document.createElement( 'div' );\r\n line.style.width = '1px';\r\n line.style.marginLeft = '6px';\r\n line.style.marginTop = '2px';\r\n line.style.height = '0px'; // get in time\r\n grabber.appendChild( line );\r\n grabber.addEventListener( 'mousedown', innerMouseDown );\r\n\r\n this.grabber = grabber;\r\n\r\n function getBranchHeight()\r\n {\r\n return that.root.offsetHeight - that.root.children[0].offsetHeight;\r\n }\r\n\r\n let that = this;\r\n\r\n function innerMouseDown( e: MouseEvent )\r\n {\r\n var doc = that.root.ownerDocument;\r\n doc.addEventListener( 'mouseup', innerMouseUp );\r\n doc.addEventListener( 'mousemove', innerMouseMove );\r\n e.stopPropagation();\r\n e.preventDefault();\r\n const h = getBranchHeight();\r\n line.style.height = ( h - 3 ) + 'px';\r\n document.body.classList.add( 'nocursor' );\r\n }\r\n\r\n function innerMouseMove( e: MouseEvent )\r\n {\r\n let dt = e.movementX;\r\n\r\n if ( dt != 0 )\r\n {\r\n const margin = parseFloat( grabber.style.marginLeft );\r\n grabber.style.marginLeft = LX.clamp( margin + dt, 32, that.content.offsetWidth - 32 ) + 'px';\r\n }\r\n }\r\n\r\n function innerMouseUp( e: MouseEvent )\r\n {\r\n that._updateComponents();\r\n\r\n line.style.height = '0px';\r\n\r\n var doc = that.root.ownerDocument;\r\n doc.removeEventListener( 'mouseup', innerMouseUp );\r\n doc.removeEventListener( 'mousemove', innerMouseMove );\r\n document.body.classList.remove( 'nocursor' );\r\n }\r\n\r\n this.content.appendChild( element );\r\n }\r\n\r\n _updateComponents()\r\n {\r\n var size = this.grabber.style.marginLeft;\r\n\r\n // Update sizes of components inside\r\n for ( let i = 0; i < this.components.length; i++ )\r\n {\r\n let component = this.components[i];\r\n const element = component.root;\r\n\r\n if ( element.children.length < 2 )\r\n {\r\n continue;\r\n }\r\n\r\n let name = element.children[0];\r\n let value = element.children[1];\r\n\r\n name.style.width = size;\r\n name.style.minWidth = size;\r\n\r\n switch ( component.type )\r\n {\r\n case LX.BaseComponent.CUSTOM:\r\n case LX.BaseComponent.ARRAY:\r\n continue;\r\n }\r\n\r\n value.style.width = '-moz-calc( 100% - ' + size + ' )';\r\n value.style.width = '-webkit-calc( 100% - ' + size + ' )';\r\n value.style.width = 'calc( 100% - ' + size + ' )';\r\n }\r\n }\r\n}\r\n\r\nLX.Branch = Branch;\r\n","// Panel.ts @jxarco\r\n\r\nimport { ArrayInput } from '../components/ArrayInput';\r\nimport { BaseComponent, ComponentType } from '../components/BaseComponent';\r\nimport { Button } from '../components/Button';\r\nimport { Card } from '../components/Card';\r\nimport { Checkbox } from '../components/Checkbox';\r\nimport { ColorInput } from '../components/ColorInput';\r\nimport { ComboButtons } from '../components/ComboButtons';\r\nimport { Counter } from '../components/Counter';\r\nimport { Curve } from '../components/Curve';\r\nimport { DatePicker } from '../components/DatePicker';\r\nimport { Dial } from '../components/Dial';\r\nimport { FileInput } from '../components/FileInput';\r\nimport { Form } from '../components/Form';\r\nimport { Layers } from '../components/Layers';\r\nimport { List } from '../components/List';\r\nimport { Map2D } from '../components/Map2D';\r\nimport { Tree } from '../components/NodeTree';\r\nimport { NumberInput } from '../components/NumberInput';\r\nimport { OTPInput } from '../components/OTPInput';\r\nimport { Pad } from '../components/Pad';\r\nimport { Progress } from '../components/Progress';\r\nimport { RadioGroup } from '../components/RadioGroup';\r\nimport { RangeInput } from '../components/RangeInput';\r\nimport { Rate } from '../components/Rate';\r\nimport { Select } from '../components/Select';\r\nimport { SizeInput } from '../components/SizeInput';\r\nimport { Table } from '../components/Table';\r\nimport { TabSections } from '../components/TabSections';\r\nimport { Tags } from '../components/Tags';\r\nimport { TextArea } from '../components/TextArea';\r\nimport { TextInput } from '../components/TextInput';\r\nimport { Title } from '../components/Title';\r\nimport { Toggle } from '../components/Toggle';\r\nimport { Vector } from '../components/Vector';\r\nimport { Branch } from './Branch';\r\nimport { LX } from './Namespace';\r\n\r\n/**\r\n * @class Panel\r\n */\r\n\r\nexport class Panel\r\n{\r\n root: any;\r\n branches: Branch[];\r\n components: Record<string, any>;\r\n signals: any[];\r\n queuedContainer: any;\r\n\r\n _branchOpen: boolean;\r\n _currentBranch: any;\r\n _queue: any[]; // Append components in other locations\r\n _inlineComponentsLeft: number;\r\n _inlineQueuedContainer: any;\r\n _inlineExtraClass: string | null;\r\n _inlineContainer: any;\r\n _inlineComponents: any[];\r\n\r\n /**\r\n * @param {Object} options\r\n * id: Id of the element\r\n * className: Add class to the element\r\n * width: Width of the panel element [fit space]\r\n * height: Height of the panel element [fit space]\r\n * style: CSS Style object to be applied to the panel\r\n */\r\n\r\n constructor( options: any = {} )\r\n {\r\n var root = document.createElement( 'div' );\r\n root.className = 'lexpanel';\r\n\r\n if ( options.id )\r\n {\r\n root.id = options.id;\r\n }\r\n\r\n if ( options.className )\r\n {\r\n root.className += ' ' + options.className;\r\n }\r\n\r\n root.style.width = options.width || '100%';\r\n root.style.height = options.height || '100%';\r\n Object.assign( root.style, options.style ?? {} );\r\n\r\n this.root = root;\r\n this.branches = [];\r\n this.signals = [];\r\n this.components = {};\r\n\r\n this._branchOpen = false;\r\n this._currentBranch = null;\r\n this._queue = []; // Append components in other locations\r\n this._inlineComponentsLeft = -1;\r\n this._inlineQueuedContainer = null;\r\n this._inlineExtraClass = null;\r\n this._inlineComponents = [];\r\n }\r\n\r\n get( name: string )\r\n {\r\n return this.components[name];\r\n }\r\n\r\n getValue( name: string )\r\n {\r\n let component = this.components[name];\r\n\r\n if ( !component )\r\n {\r\n throw ( 'No component called ' + name );\r\n }\r\n\r\n return component.value();\r\n }\r\n\r\n setValue( name: string, value: any, skipCallback?: boolean )\r\n {\r\n let component = this.components[name];\r\n\r\n if ( !component )\r\n {\r\n throw ( 'No component called ' + name );\r\n }\r\n\r\n return component.set( value, skipCallback );\r\n }\r\n\r\n /**\r\n * @method attach\r\n * @param {Element} content child element to append to panel\r\n */\r\n\r\n attach( content: any )\r\n {\r\n console.assert( content, 'No content to attach!' );\r\n content.parent = this;\r\n this.root.appendChild( content.root ? content.root : content );\r\n }\r\n\r\n /**\r\n * @method clear\r\n */\r\n\r\n clear()\r\n {\r\n this.branches = [];\r\n this._branchOpen = false;\r\n this._currentBranch = null;\r\n\r\n for ( let w in this.components )\r\n {\r\n if ( this.components[w].options && this.components[w].options.signal )\r\n {\r\n const signal = this.components[w].options.signal;\r\n for ( let i = 0; i < LX.signals[signal].length; i++ )\r\n {\r\n if ( LX.signals[signal][i] == this.components[w] )\r\n {\r\n LX.signals[signal] = [ ...LX.signals[signal].slice( 0, i ),\r\n ...LX.signals[signal].slice( i + 1 ) ];\r\n }\r\n }\r\n }\r\n }\r\n\r\n if ( this.signals )\r\n {\r\n for ( let w = 0; w < this.signals.length; w++ )\r\n {\r\n let c: any = Object.values( this.signals[w] )[0];\r\n let signal = c.options.signal;\r\n for ( let i = 0; i < LX.signals[signal].length; i++ )\r\n {\r\n if ( LX.signals[signal][i] == c )\r\n {\r\n LX.signals[signal] = [ ...LX.signals[signal].slice( 0, i ),\r\n ...LX.signals[signal].slice( i + 1 ) ];\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.components = {};\r\n this.root.innerHTML = '';\r\n }\r\n\r\n /**\r\n * @method sameLine\r\n * @param {Number} numberOfComponents Of components that will be placed in the same line\r\n * @param {String} className Extra class to customize inline components parent container\r\n * @description Next N components will be in the same line. If no number, it will inline all until calling nextLine()\r\n */\r\n\r\n sameLine( numberOfComponents: number, className?: string )\r\n {\r\n this._inlineQueuedContainer = this.queuedContainer;\r\n this._inlineComponentsLeft = numberOfComponents ?? Infinity;\r\n this._inlineExtraClass = className ?? null;\r\n }\r\n\r\n /**\r\n * @method endLine\r\n * @param {String} className Extra class to customize inline components parent container\r\n * @description Stop inlining components. Use it only if the number of components to be inlined is NOT specified.\r\n */\r\n\r\n endLine( className?: string | null )\r\n {\r\n className = className ?? this._inlineExtraClass;\r\n\r\n if ( this._inlineComponentsLeft == -1 )\r\n {\r\n console.warn( 'No pending components to be inlined!' );\r\n return;\r\n }\r\n\r\n this._inlineComponentsLeft = -1;\r\n\r\n if ( !this._inlineContainer )\r\n {\r\n this._inlineContainer = document.createElement( 'div' );\r\n this._inlineContainer.className = 'lexinlinecomponents';\r\n\r\n if ( className )\r\n {\r\n this._inlineContainer.className += ` ${className}`;\r\n }\r\n }\r\n\r\n // Push all elements single element or Array[element, container]\r\n for ( let item of this._inlineComponents )\r\n {\r\n const isPair = item.constructor == Array;\r\n\r\n if ( isPair )\r\n {\r\n // eg. an array, inline items appended later to\r\n if ( this._inlineQueuedContainer )\r\n {\r\n this._inlineContainer.appendChild( item[0] );\r\n }\r\n // eg. a select, item is appended to parent, not to inline cont.\r\n else\r\n {\r\n item[1].appendChild( item[0] );\r\n }\r\n }\r\n else\r\n {\r\n this._inlineContainer.appendChild( item );\r\n }\r\n }\r\n\r\n if ( !this._inlineQueuedContainer )\r\n {\r\n if ( this._currentBranch )\r\n {\r\n this._currentBranch.content.appendChild( this._inlineContainer );\r\n }\r\n else\r\n {\r\n this.root.appendChild( this._inlineContainer );\r\n }\r\n }\r\n else\r\n {\r\n this._inlineQueuedContainer.appendChild( this._inlineContainer );\r\n }\r\n\r\n this._inlineComponents = [];\r\n this._inlineContainer = null;\r\n this._inlineExtraClass = null;\r\n }\r\n\r\n /**\r\n * @method branch\r\n * @param {String} name Name of the branch/section\r\n * @param {Object} options\r\n * id: Id of the branch\r\n * className: Add class to the branch\r\n * closed: Set branch collapsed/opened [false]\r\n * icon: Set branch icon (LX.ICONS)\r\n * filter: Allow filter components in branch by name [false]\r\n */\r\n\r\n branch( name: string, options: any = {} )\r\n {\r\n if ( this._branchOpen )\r\n {\r\n this.merge();\r\n }\r\n\r\n // Create new branch\r\n var branch = new Branch( name, options );\r\n branch.panel = this;\r\n\r\n // Declare new open\r\n this._branchOpen = true;\r\n this._currentBranch = branch;\r\n\r\n this.branches.push( branch );\r\n this.root.appendChild( branch.root );\r\n\r\n // Add component filter\r\n if ( options.filter )\r\n {\r\n this._addFilter( options.filter, { callback: this._searchComponents.bind( this, branch.name ) } );\r\n }\r\n\r\n return branch;\r\n }\r\n\r\n merge()\r\n {\r\n this._branchOpen = false;\r\n this._currentBranch = null;\r\n }\r\n\r\n _pick( arg: any, def: any )\r\n {\r\n return ( typeof arg == 'undefined' ? def : arg );\r\n }\r\n\r\n /*\r\n Panel Components\r\n */\r\n\r\n _attachComponent( component: any, options: any = {} )\r\n {\r\n if ( component.name != undefined )\r\n {\r\n this.components[component.name] = component;\r\n }\r\n\r\n if ( component.options.signal && !component.name )\r\n {\r\n if ( !this.signals )\r\n {\r\n this.signals = [];\r\n }\r\n\r\n this.signals.push( { [component.options.signal]: component } );\r\n }\r\n\r\n const _insertComponent = ( el: HTMLElement ) => {\r\n if ( options.container )\r\n {\r\n options.container.appendChild( el );\r\n }\r\n else if ( !this.queuedContainer )\r\n {\r\n if ( this._currentBranch )\r\n {\r\n if ( !options.skipComponent )\r\n {\r\n this._currentBranch.components.push( component );\r\n }\r\n this._currentBranch.content.appendChild( el );\r\n }\r\n else\r\n {\r\n el.className += ' nobranch w-full';\r\n this.root.appendChild( el );\r\n }\r\n }\r\n // Append content to queued tab container\r\n else\r\n {\r\n this.queuedContainer.appendChild( el );\r\n }\r\n };\r\n\r\n const _storeComponent = ( el: HTMLElement ) => {\r\n if ( !this.queuedContainer )\r\n {\r\n this._inlineComponents.push( el );\r\n }\r\n // Append content to queued tab container\r\n else\r\n {\r\n this._inlineComponents.push( [ el, this.queuedContainer ] );\r\n }\r\n };\r\n\r\n // Process inline components\r\n if ( this._inlineComponentsLeft > 0 && !options.skipInlineCount )\r\n {\r\n // Store component and its container\r\n _storeComponent( component.root );\r\n\r\n this._inlineComponentsLeft--;\r\n\r\n // Last component\r\n if ( !this._inlineComponentsLeft )\r\n {\r\n this.endLine();\r\n }\r\n }\r\n else\r\n {\r\n _insertComponent( component.root );\r\n }\r\n\r\n return component;\r\n }\r\n\r\n _addFilter( placeholder: string, options: any = {} )\r\n {\r\n options.placeholder = placeholder.constructor == String ? placeholder : 'Filter properties..';\r\n options.skipComponent = options.skipComponent ?? true;\r\n options.skipInlineCount = true;\r\n\r\n let component = new TextInput( null, undefined, null, options );\r\n const element = component.root;\r\n element.className += ' lexfilter';\r\n\r\n let input = document.createElement( 'input' );\r\n input.className = 'lexinput-filter';\r\n input.setAttribute( 'placeholder', options.placeholder );\r\n input.style.width = '100%';\r\n input.value = options.filterValue || '';\r\n\r\n let searchIcon = LX.makeIcon( 'Search' );\r\n element.appendChild( searchIcon );\r\n element.appendChild( input );\r\n\r\n input.addEventListener( 'input', ( e ) => {\r\n if ( options.callback )\r\n {\r\n options.callback( input.value, e );\r\n }\r\n } );\r\n\r\n return element;\r\n }\r\n\r\n _searchComponents( branchName: string, value: string )\r\n {\r\n for ( let b of this.branches )\r\n {\r\n if ( b.name !== branchName )\r\n {\r\n continue;\r\n }\r\n\r\n // remove all components\r\n for ( let w of b.components )\r\n {\r\n if ( w.domEl.classList.contains( 'lexfilter' ) )\r\n {\r\n continue;\r\n }\r\n w.domEl.remove();\r\n }\r\n\r\n // push to right container\r\n this.queue( b.content );\r\n\r\n const emptyFilter = !value.length;\r\n\r\n // add components\r\n for ( let w of b.components )\r\n {\r\n if ( !emptyFilter )\r\n {\r\n if ( !w.name ) continue;\r\n // const filterWord = value.toLowerCase();\r\n const name = w.name.toLowerCase();\r\n if ( !name.includes( value ) ) continue;\r\n }\r\n\r\n // insert filtered component\r\n this.queuedContainer.appendChild( w.domEl );\r\n }\r\n\r\n // push again to current branch\r\n this.clearQueue();\r\n\r\n // no more branches to check!\r\n return;\r\n }\r\n }\r\n\r\n /**\r\n * @method getBranch\r\n * @param {String} name if null, return current branch\r\n */\r\n\r\n getBranch( name: string )\r\n {\r\n if ( name )\r\n {\r\n return this.branches.find( ( b ) => b.name == name );\r\n }\r\n\r\n return this._currentBranch;\r\n }\r\n\r\n /**\r\n * @method queue\r\n * @param {HTMLElement} domEl container to append elements to\r\n */\r\n\r\n queue( domEl: any )\r\n {\r\n if ( !domEl && this._currentBranch )\r\n {\r\n domEl = this._currentBranch.root;\r\n }\r\n\r\n if ( this.queuedContainer )\r\n {\r\n this._queue.push( this.queuedContainer );\r\n }\r\n\r\n this.queuedContainer = domEl;\r\n }\r\n\r\n /**\r\n * @method clearQueue\r\n */\r\n\r\n clearQueue()\r\n {\r\n if ( this._queue && this._queue.length )\r\n {\r\n this.queuedContainer = this._queue.pop();\r\n return;\r\n }\r\n\r\n delete this.queuedContainer;\r\n }\r\n\r\n /**\r\n * @method addSeparator\r\n */\r\n\r\n addSeparator()\r\n {\r\n var element = document.createElement( 'div' );\r\n element.className = 'lexseparator';\r\n\r\n let component = new BaseComponent( ComponentType.SEPARATOR );\r\n component.root = element;\r\n\r\n if ( this._currentBranch )\r\n {\r\n this._currentBranch.content.appendChild( element );\r\n this._currentBranch.components.push( component );\r\n }\r\n else\r\n {\r\n this.root.appendChild( element );\r\n }\r\n }\r\n\r\n /**\r\n * @method addTitle\r\n * @param {String} name Title name\r\n * @param {Object} options:\r\n * link: Href in case title is an hyperlink\r\n * target: Target name of the iframe (if any)\r\n * icon: Name of the icon (if any)\r\n * iconColor: Color of title icon (if any)\r\n * style: CSS to override\r\n */\r\n\r\n addTitle( name: string, options: any = {} )\r\n {\r\n const component = new Title( name, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addText\r\n * @param {String} name Component name\r\n * @param {String} value Text value\r\n * @param {Function} callback Callback function on change\r\n * @param {Object} options:\r\n * hideName: Don't use name as label [false]\r\n * disabled: Make the component disabled [false]\r\n * required: Make the input required\r\n * placeholder: Add input placeholder\r\n * icon: Icon (if any) to append at the input start\r\n * pattern: Regular expression that value must match\r\n * trigger: Choose onchange trigger (default, input) [default]\r\n * inputWidth: Width of the text input\r\n * fit: Input widts fits content [false]\r\n * inputClass: Class to add to the native input element\r\n * skipReset: Don't add the reset value button when value changes\r\n * float: Justify input text content\r\n * justifyName: Justify name content\r\n */\r\n\r\n addText( name: string | null, value: string, callback: any, options: any = {} )\r\n {\r\n const component = new TextInput( name, value, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addTextArea\r\n * @param {String} name Component name\r\n * @param {String} value Text Area value\r\n * @param {Function} callback Callback function on change\r\n * @param {Object} options:\r\n * hideName: Don't use name as label [false]\r\n * disabled: Make the component disabled [false]\r\n * placeholder: Add input placeholder\r\n * resize: Allow resize [true]\r\n * trigger: Choose onchange trigger (default, input) [default]\r\n * inputWidth: Width of the text input\r\n * float: Justify input text content\r\n * justifyName: Justify name content\r\n * fitHeight: Height adapts to text\r\n */\r\n\r\n addTextArea( name: string | null, value: string, callback: any, options: any = {} )\r\n {\r\n const component = new TextArea( name, value, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addLabel\r\n * @param {String} value Information string\r\n * @param {Object} options Text options\r\n */\r\n\r\n addLabel( value: string, options: any = {} )\r\n {\r\n options.disabled = true;\r\n options.inputClass = ( options.inputClass ?? '' ) + ' bg-none';\r\n const component = this.addText( null, value, null, options );\r\n component.type = ComponentType.LABEL;\r\n return component;\r\n }\r\n\r\n /**\r\n * @method addButton\r\n * @param {String} name Component name\r\n * @param {String} value Button name\r\n * @param {Function} callback Callback function on click\r\n * @param {Object} options:\r\n * hideName: Don't use name as label [false]\r\n * disabled: Make the component disabled [false]\r\n * icon: Icon class to show as button value\r\n * iconPosition: Icon position (cover|start|end)\r\n * fileInput: Button click requests a file\r\n * fileInputType: Type of the requested file\r\n * img: Path to image to show as button value\r\n * title: Text to show in native Element title\r\n * buttonClass: Class to add to the native button element\r\n * mustConfirm: User must confirm trigger in a popover\r\n */\r\n\r\n addButton( name: string | null, value: string, callback: any, options: any = {} )\r\n {\r\n const component = new Button( name, value, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addComboButtons\r\n * @param {String} name Component name\r\n * @param {Array} values Each of the {value, callback, selected, disabled} items\r\n * @param {Object} options:\r\n * hideName: Don't use name as label [false]\r\n * float: Justify content (left, center, right) [center]\r\n * selected: Selected button by default (String|Array)\r\n * noSelection: Buttons can be clicked, but they are not selectable\r\n * toggle: Buttons can be toggled insted of selecting only one\r\n */\r\n\r\n addComboButtons( name: string, values: any[], options: any = {} )\r\n {\r\n const component = new ComboButtons( name, values, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addCard\r\n * @param {String} name Card Name\r\n * @param {Object} options:\r\n * text: Card text\r\n * link: Card link\r\n * title: Card dom title\r\n * src: url of the image\r\n * callback (Function): function to call on click\r\n */\r\n\r\n addCard( name: string, options: any = {} )\r\n {\r\n const component = new Card( name, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addForm\r\n * @param {String} name Component name\r\n * @param {Object} data Form data\r\n * @param {Function} callback Callback function on submit form\r\n * @param {Object} options:\r\n * primaryActionName: Text to be shown in the primary action button ['Submit']\r\n * primaryButtonClass: Button class for primary action button ['contrast']\r\n * secondaryActionName: Text to be shown in the secondary action button ['Cancel']\r\n * secondaryActionCallback: Callback function on press secondary button\r\n * secondaryButtonClass: Button class for secondary action button ['primary']\r\n * skipLabels: Do not show input field labels [false]\r\n */\r\n\r\n addForm( name: string, data: any, callback: any, options: any = {} )\r\n {\r\n const component = new Form( name, data, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addContent\r\n * @param {String} name Component name\r\n * @param {HTMLElement/String} element\r\n * @param {Object} options\r\n */\r\n\r\n addContent( name: string, element: any, options: any = {} )\r\n {\r\n console.assert( element, 'Empty content!' );\r\n\r\n if ( element.constructor == String )\r\n {\r\n const tmp: any = document.createElement( 'div' );\r\n tmp.innerHTML = element;\r\n\r\n if ( tmp.childElementCount > 1 )\r\n {\r\n element = tmp;\r\n }\r\n else\r\n {\r\n element = tmp.firstElementChild;\r\n }\r\n }\r\n\r\n options.hideName = true;\r\n\r\n let component = new BaseComponent( ComponentType.CONTENT, name, null, options );\r\n component.root.appendChild( element );\r\n\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addImage\r\n * @param {String} name Component name\r\n * @param {String} url Image Url\r\n * @param {Object} options\r\n * hideName: Don't use name as label [false]\r\n */\r\n\r\n async addImage( name: string, url: string, options: any = {} )\r\n {\r\n console.assert( url.length !== 0, 'Empty src/url for Image!' );\r\n\r\n let container = document.createElement( 'div' );\r\n container.className = 'leximage';\r\n container.style.width = '100%';\r\n\r\n let img = document.createElement( 'img' );\r\n img.src = url;\r\n Object.assign( img.style, options.style ?? {} );\r\n container.appendChild( img );\r\n\r\n let component = new BaseComponent( ComponentType.IMAGE, name, null, options );\r\n component.root.appendChild( container );\r\n\r\n // await img.decode();\r\n img.decode();\r\n\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addSelect\r\n * @param {String} name Component name\r\n * @param {Array} values Posible options of the select component -> String (for default select) or Object = {value, url} (for images, gifs..)\r\n * @param {String} value Select by default option\r\n * @param {Function} callback Callback function on change\r\n * @param {Object} options:\r\n * hideName: Don't use name as label [false]\r\n * filter: Add a search bar to the component [false]\r\n * disabled: Make the component disabled [false]\r\n * skipReset: Don't add the reset value button when value changes\r\n * placeholder: Placeholder for the filter input\r\n * emptyMsg: Custom message to show when no filtered results\r\n */\r\n\r\n addSelect( name: string | null, values: any[], value: string, callback: any, options: any = {} )\r\n {\r\n const component = new Select( name, values, value, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addCurve\r\n * @param {String} name Component name\r\n * @param {Array of Array} values Array of 2N Arrays of each value of the curve\r\n * @param {Function} callback Callback function on change\r\n * @param {Object} options:\r\n * skipReset: Don't add the reset value button when value changes\r\n * bgColor: Component background color\r\n * pointsColor: Curve points color\r\n * lineColor: Curve line color\r\n * noOverlap: Points do not overlap, replacing themselves if necessary\r\n * allowAddValues: Support adding values on click\r\n * smooth: Curve smoothness\r\n * moveOutAction: Clamp or delete points moved out of the curve (LX.CURVE_MOVEOUT_CLAMP, LX.CURVE_MOVEOUT_DELETE)\r\n */\r\n\r\n addCurve( name: string, values: any[], callback: any, options: any = {} )\r\n {\r\n const component = new Curve( name, values, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addDial\r\n * @param {String} name Component name\r\n * @param {Array of Array} values Array of 2N Arrays of each value of the dial\r\n * @param {Function} callback Callback function on change\r\n * @param {Object} options:\r\n * skipReset: Don't add the reset value button when value changes\r\n * bgColor: Component background color\r\n * pointsColor: Curve points color\r\n * lineColor: Curve line color\r\n * noOverlap: Points do not overlap, replacing themselves if necessary\r\n * allowAddValues: Support adding values on click\r\n * smooth: Curve smoothness\r\n * moveOutAction: Clamp or delete points moved out of the curve (LX.CURVE_MOVEOUT_CLAMP, LX.CURVE_MOVEOUT_DELETE)\r\n */\r\n\r\n addDial( name: string, values: any[], callback: any, options: any = {} )\r\n {\r\n const component = new Dial( name, values, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addLayers\r\n * @param {String} name Component name\r\n * @param {Number} value Flag value by default option\r\n * @param {Function} callback Callback function on change\r\n * @param {Object} options:\r\n */\r\n\r\n addLayers( name: string, value: number, callback: any, options: any = {} )\r\n {\r\n const component = new Layers( name, value, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addArray\r\n * @param {String} name Component name\r\n * @param {Array} values By default values in the array\r\n * @param {Function} callback Callback function on change\r\n * @param {Object} options:\r\n * innerValues (Array): Use select mode and use values as options\r\n */\r\n\r\n addArray( name: string, values: any[] = [], callback: any, options: any = {} )\r\n {\r\n const component = new ArrayInput( name, values, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addList\r\n * @param {String} name Component name\r\n * @param {Array} values List values\r\n * @param {String} value Selected list value\r\n * @param {Function} callback Callback function on change\r\n * @param {Object} options:\r\n * hideName: Don't use name as label [false]\r\n */\r\n\r\n addList( name: string, values: any[], value: any, callback: any, options: any = {} )\r\n {\r\n const component = new List( name, values, value, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addTags\r\n * @param {String} name Component name\r\n * @param {String} value Comma separated tags\r\n * @param {Function} callback Callback function on change\r\n * @param {Object} options:\r\n * hideName: Don't use name as label [false]\r\n */\r\n\r\n addTags( name: string, value: string, callback: any, options: any = {} )\r\n {\r\n const component = new Tags( name, value, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addCheckbox\r\n * @param {String} name Component name\r\n * @param {Boolean} value Value of the checkbox\r\n * @param {Function} callback Callback function on change\r\n * @param {Object} options:\r\n * disabled: Make the component disabled [false]\r\n * label: Checkbox label\r\n * suboptions: Callback to add components in case of TRUE value\r\n * className: Extra classes to customize style\r\n */\r\n\r\n addCheckbox( name: string | null, value: boolean, callback: any, options: any = {} )\r\n {\r\n const component = new Checkbox( name, value, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addToggle\r\n * @param {String} name Component name\r\n * @param {Boolean} value Value of the checkbox\r\n * @param {Function} callback Callback function on change\r\n * @param {Object} options:\r\n * disabled: Make the component disabled [false]\r\n * label: Toggle label\r\n * suboptions: Callback to add components in case of TRUE value\r\n * className: Customize colors\r\n */\r\n\r\n addToggle( name: string, value: boolean, callback: any, options: any = {} )\r\n {\r\n const component = new Toggle( name, value, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addRadioGroup\r\n * @param {String} name Component name\r\n * @param {String} label Radio label\r\n * @param {Array} values Radio options\r\n * @param {Function} callback Callback function on change\r\n * @param {Object} options:\r\n * disabled: Make the component disabled [false]\r\n * className: Customize colors\r\n * selected: Index of the default selected option\r\n */\r\n\r\n addRadioGroup( name: string, label: string, values: any[], callback: any, options: any = {} )\r\n {\r\n const component = new RadioGroup( name, label, values, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addColor\r\n * @param {String} name Component name\r\n * @param {String} value Default color (hex)\r\n * @param {Function} callback Callback function on change\r\n * @param {Object} options:\r\n * disabled: Make the component disabled [false]\r\n * useRGB: The callback returns color as Array (r, g, b) and not hex [false]\r\n */\r\n\r\n addColor( name: string, value: any, callback: any, options: any = {} )\r\n {\r\n const component = new ColorInput( name, value, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addRange\r\n * @param {String} name Component name\r\n * @param {Number} value Default number value\r\n * @param {Function} callback Callback function on change\r\n * @param {Object} options:\r\n * hideName: Don't use name as label [false]\r\n * className: Extra classes to customize style\r\n * disabled: Make the component disabled [false]\r\n * left: The slider goes to the left instead of the right\r\n * fill: Fill slider progress [true]\r\n * step: Step of the input\r\n * min, max: Min and Max values for the input\r\n */\r\n\r\n addRange( name: string, value: number, callback: any, options: any = {} )\r\n {\r\n const component = new RangeInput( name, value, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addNumber\r\n * @param {String} name Component name\r\n * @param {Number} value Default number value\r\n * @param {Function} callback Callback function on change\r\n * @param {Object} options:\r\n * hideName: Don't use name as label [false]\r\n * disabled: Make the component disabled [false]\r\n * step: Step of the input\r\n * precision: The number of digits to appear after the decimal point\r\n * min, max: Min and Max values for the input\r\n * skipSlider: If there are min and max values, skip the slider\r\n * units: Unit as string added to the end of the value\r\n * onPress: Callback function on mouse down\r\n * onRelease: Callback function on mouse up\r\n */\r\n\r\n addNumber( name: string | null, value: number, callback: any, options: any = {} )\r\n {\r\n const component = new NumberInput( name, value, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n static VECTOR_COMPONENTS = { 0: 'x', 1: 'y', 2: 'z', 3: 'w' };\r\n\r\n _addVector( numComponents: number, name: string, value: any[], callback: any, options: any = {} )\r\n {\r\n const component = new Vector( numComponents, name, value, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addVector N (2, 3, 4)\r\n * @param {String} name Component name\r\n * @param {Array} value Array of N components\r\n * @param {Function} callback Callback function on change\r\n * @param {Object} options:\r\n * disabled: Make the component disabled [false]\r\n * step: Step of the inputs\r\n * min, max: Min and Max values for the inputs\r\n * onPress: Callback function on mouse down\r\n * onRelease: Callback function on mouse is released\r\n */\r\n\r\n addVector2( name: string, value: any[], callback: any, options: any )\r\n {\r\n return this._addVector( 2, name, value, callback, options );\r\n }\r\n\r\n addVector3( name: string, value: any[], callback: any, options: any )\r\n {\r\n return this._addVector( 3, name, value, callback, options );\r\n }\r\n\r\n addVector4( name: string, value: any[], callback: any, options: any )\r\n {\r\n return this._addVector( 4, name, value, callback, options );\r\n }\r\n\r\n /**\r\n * @method addSize\r\n * @param {String} name Component name\r\n * @param {Number} value Default number value\r\n * @param {Function} callback Callback function on change\r\n * @param {Object} options:\r\n * hideName: Don't use name as label [false]\r\n * disabled: Make the component disabled [false]\r\n * units: Unit as string added to the end of the value\r\n */\r\n\r\n addSize( name: string, value: any, callback: any, options: any = {} )\r\n {\r\n const component = new SizeInput( name, value, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addOTP\r\n * @param {String} name Component name\r\n * @param {String} value Default numeric value in string format\r\n * @param {Function} callback Callback function on change\r\n * @param {Object} options:\r\n * hideName: Don't use name as label [false]\r\n * disabled: Make the component disabled [false]\r\n * pattern: OTP numeric pattern\r\n */\r\n\r\n addOTP( name: string, value: string, callback: any, options: any = {} )\r\n {\r\n const component = new OTPInput( name, value, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addPad\r\n * @param {String} name Component name\r\n * @param {Array} value Pad value\r\n * @param {Function} callback Callback function on change\r\n * @param {Object} options:\r\n * disabled: Make the component disabled [false]\r\n * min, max: Min and Max values\r\n * padSize: Size of the pad (css)\r\n * onPress: Callback function on mouse down\r\n * onRelease: Callback function on mouse up\r\n */\r\n\r\n addPad( name: string, value: any[], callback: any, options: any = {} )\r\n {\r\n const component = new Pad( name, value, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addProgress\r\n * @param {String} name Component name\r\n * @param {Number} value Progress value\r\n * @param {Object} options:\r\n * min, max: Min and Max values\r\n * low, optimum, high: Low and High boundary values, Optimum point in the range\r\n * showValue: Show current value\r\n * editable: Allow edit value\r\n * callback: Function called on change value\r\n */\r\n\r\n addProgress( name: string, value: number, options: any = {} )\r\n {\r\n const component = new Progress( name, value, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addFile\r\n * @param {String} name Component name\r\n * @param {Function} callback Callback function on change\r\n * @param {Object} options:\r\n * local: Ask for local file\r\n * disabled: Make the component disabled [false]\r\n * read: Return the file itself (False) or the contents (True)\r\n * type: type to read as [text (Default), buffer, bin, url]\r\n */\r\n\r\n addFile( name: string, callback: any, options: any = {} )\r\n {\r\n const component = new FileInput( name, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addTree\r\n * @param {String} name Component name\r\n * @param {Object} data Data of the tree\r\n * @param {Object} options:\r\n * icons: Array of objects with icon button information {name, icon, callback}\r\n * filter: Add nodes filter [true]\r\n * rename: Boolean to allow rename [true]\r\n * onevent(tree_event): Called when node is selected, dbl clicked, contextmenu opened, changed visibility, parent or name\r\n */\r\n\r\n addTree( name: string, data: any, options: any = {} )\r\n {\r\n const component = new Tree( name, data, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addTabSections\r\n * @param {String} name Component name\r\n * @param {Array} tabs Contains objects with {\r\n * name: Name of the tab (if icon, use as title)\r\n * icon: Icon to be used as the tab icon (optional)\r\n * iconClass: Class to be added to the icon (optional)\r\n * svgClass: Class to be added to the inner SVG of the icon (optional)\r\n * onCreate: Func to be called at tab creation\r\n * onSelect: Func to be called on select tab (optional)\r\n * }\r\n * @param {Object} options\r\n * vertical: Use vertical or horizontal tabs (vertical by default)\r\n * showNames: Show tab name only in horizontal tabs\r\n */\r\n\r\n addTabSections( name: string, tabs: any[], options: any = {} )\r\n {\r\n const component = new TabSections( name, tabs, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addCounter\r\n * @param {String} name Component name\r\n * @param {Number} value Counter value\r\n * @param {Function} callback Callback function on change\r\n * @param {Object} options:\r\n * disabled: Make the component disabled [false]\r\n * min, max: Min and Max values\r\n * step: Step for adding/substracting\r\n */\r\n\r\n addCounter( name: string, value: number, callback: any, options: any = {} )\r\n {\r\n const component = new Counter( name, value, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addTable\r\n * @param {String} name Component name\r\n * @param {Number} data Table data\r\n * @param {Object} options:\r\n * hideName: Don't use name as label [false]\r\n * head: Table headers (each of the headers per column)\r\n * body: Table body (data per row for each column)\r\n * rowActions: Allow to add actions per row\r\n * onMenuAction: Function callback to fill the \"menu\" context\r\n * selectable: Each row can be selected\r\n * sortable: Rows can be sorted by the user manually\r\n * centered: Center text within columns. true for all, Array for center selected cols\r\n * toggleColumns: Columns visibility can be toggled\r\n * filter: Name of the column to filter by text input (if any)\r\n * filterValue: Initial filter value\r\n * customFilters: Add selectors to filter by specific option values\r\n */\r\n\r\n addTable( name: string, data: any, options: any = {} )\r\n {\r\n const component = new Table( name, data, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addDate\r\n * @param {String} name Component name\r\n * @param {String} dateValue\r\n * @param {Function} callback\r\n * @param {Object} options:\r\n * hideName: Don't use name as label [false]\r\n * today: Set current day as selected by default\r\n * untilToday: Allow dates only until current day\r\n * fromToday: Allow dates only from current day\r\n */\r\n\r\n addDate( name: string, dateValue: string, callback: any, options: any = {} )\r\n {\r\n const component = new DatePicker( name, dateValue, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addMap2D\r\n * @param {String} name Component name\r\n * @param {Array} points\r\n * @param {Function} callback\r\n * @param {Object} options:\r\n */\r\n\r\n addMap2D( name: string, points: any[], callback: any, options: any = {} )\r\n {\r\n const component = new Map2D( name, points, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n\r\n /**\r\n * @method addRate\r\n * @param {String} name Component name\r\n * @param {Number} value\r\n * @param {Function} callback\r\n * @param {Object} options:\r\n */\r\n\r\n addRate( name: string, value: number, callback: any, options: any = {} )\r\n {\r\n const component = new Rate( name, value, callback, options );\r\n return this._attachComponent( component );\r\n }\r\n}\r\n\r\nLX.Panel = Panel;\r\n","// Area.ts @jxarco\r\n\r\nimport { ContextMenu } from '../components/ContextMenu';\r\nimport { Menubar } from '../components/Menubar';\r\nimport { Tabs } from '../components/Tabs';\r\nimport { LX } from './Namespace';\r\nimport { Panel } from './Panel';\r\n\r\nexport class AreaOverlayButtons\r\n{\r\n area: Area;\r\n options: any;\r\n buttons: any;\r\n\r\n constructor( area: Area, buttonsArray: any[], options = {} )\r\n {\r\n this.area = area;\r\n this.options = options;\r\n this.buttons = {};\r\n\r\n this._buildButtons( buttonsArray, options );\r\n }\r\n\r\n _buildButtons( buttonsArray: any[], options: any = {} )\r\n {\r\n options.className = 'lexoverlaybuttons';\r\n\r\n let overlayPanel = this.area.addPanel( options );\r\n let overlayGroup: any = null;\r\n\r\n const container = document.createElement( 'div' );\r\n container.className = 'lexoverlaybuttonscontainer';\r\n container.appendChild( overlayPanel.root );\r\n this.area.attach( container );\r\n\r\n const float = options.float;\r\n let floatClass = '';\r\n\r\n if ( float )\r\n {\r\n for ( let i = 0; i < float.length; i++ )\r\n {\r\n const t = float[i];\r\n switch ( t )\r\n {\r\n case 'h':\r\n break;\r\n case 'v':\r\n floatClass += ' vertical';\r\n break;\r\n case 't':\r\n break;\r\n case 'm':\r\n floatClass += ' middle';\r\n break;\r\n case 'b':\r\n floatClass += ' bottom';\r\n break;\r\n case 'l':\r\n break;\r\n case 'c':\r\n floatClass += ' center';\r\n break;\r\n case 'r':\r\n floatClass += ' right';\r\n break;\r\n }\r\n }\r\n\r\n container.className += ` ${floatClass}`;\r\n }\r\n\r\n const _addButton = ( b: any, group?: any, last?: boolean ) => {\r\n const _options: any = {\r\n width: 'auto',\r\n selectable: b.selectable,\r\n selected: b.selected,\r\n icon: b.icon,\r\n img: b.img,\r\n className: b.class ?? '',\r\n title: b.name,\r\n overflowContainerX: overlayPanel.root,\r\n swap: b.swap\r\n };\r\n\r\n if ( group )\r\n {\r\n if ( !overlayGroup )\r\n {\r\n overlayGroup = document.createElement( 'div' );\r\n overlayGroup.className = 'lexoverlaygroup';\r\n overlayPanel.queuedContainer = overlayGroup;\r\n }\r\n\r\n _options.parent = overlayGroup;\r\n }\r\n\r\n let callback = b.callback;\r\n let component: any = null;\r\n\r\n if ( b.options )\r\n {\r\n component = overlayPanel.addSelect( null, b.options, b.value ?? b.name, callback, _options );\r\n }\r\n else\r\n {\r\n component = overlayPanel.addButton( null, b.name, function( value: any, event: any )\r\n {\r\n if ( b.selectable )\r\n {\r\n if ( b.group )\r\n {\r\n let _prev = b.selected;\r\n b.group.forEach( ( sub: any ) => sub.selected = false );\r\n b.selected = !_prev;\r\n }\r\n else\r\n {\r\n b.selected = !b.selected;\r\n }\r\n }\r\n\r\n if ( callback )\r\n {\r\n callback( value, event, component.root );\r\n }\r\n }, _options );\r\n }\r\n\r\n this.buttons[b.name] = component;\r\n\r\n // ends the group\r\n if ( overlayGroup && last )\r\n {\r\n overlayPanel.root.appendChild( overlayGroup );\r\n overlayGroup = null;\r\n overlayPanel.clearQueue();\r\n }\r\n };\r\n\r\n const _refreshPanel = function()\r\n {\r\n overlayPanel.clear();\r\n\r\n for ( let b of buttonsArray )\r\n {\r\n if ( b === null )\r\n {\r\n // Add a separator\r\n const separator = document.createElement( 'div' );\r\n separator.className = 'lexoverlayseparator' + floatClass;\r\n overlayPanel.root.appendChild( separator );\r\n continue;\r\n }\r\n\r\n if ( b.constructor === Array )\r\n {\r\n for ( let i = 0; i < b.length; ++i )\r\n {\r\n let sub = b[i];\r\n sub.group = b;\r\n _addButton( sub, true, i == ( b.length - 1 ) );\r\n }\r\n }\r\n else\r\n {\r\n _addButton( b );\r\n }\r\n }\r\n\r\n // Add floating info\r\n if ( float )\r\n {\r\n var height = 0;\r\n overlayPanel.root.childNodes.forEach( ( c: HTMLElement ) => {\r\n height += c.offsetHeight;\r\n } );\r\n\r\n if ( container.className.includes( 'middle' ) )\r\n {\r\n container.style.top = '-moz-calc( 50% - ' + ( height * 0.5 ) + 'px )';\r\n container.style.top = '-webkit-calc( 50% - ' + ( height * 0.5 ) + 'px )';\r\n container.style.top = 'calc( 50% - ' + ( height * 0.5 ) + 'px )';\r\n }\r\n }\r\n };\r\n\r\n _refreshPanel();\r\n }\r\n}\r\n\r\nLX.AreaOverlayButtons = AreaOverlayButtons;\r\n\r\nexport class Area\r\n{\r\n /**\r\n * @constructor Area\r\n * @param {Object} options\r\n * id: Id of the element\r\n * className: Add class to the element\r\n * width: Width of the area element [fit space]\r\n * height: Height of the area element [fit space]\r\n * skipAppend: Create but not append to GUI root [false]\r\n * minWidth: Minimum width to be applied when resizing\r\n * minHeight: Minimum height to be applied when resizing\r\n * maxWidth: Maximum width to be applied when resizing\r\n * maxHeight: Maximum height to be applied when resizing\r\n * layout: Layout to automatically split the area\r\n */\r\n\r\n offset: number = 0;\r\n root: any;\r\n size: any[];\r\n resize: boolean = false;\r\n sections: any[] = [];\r\n panels: any[] = [];\r\n\r\n minWidth: number = 0;\r\n minHeight: number = 0;\r\n maxWidth: number = Infinity;\r\n maxHeight: Number = Infinity;\r\n\r\n layout: any;\r\n type?: string;\r\n parentArea?: Area;\r\n splitBar?: any;\r\n splitExtended?: boolean;\r\n overlayButtons?: AreaOverlayButtons;\r\n onresize?: any;\r\n\r\n _autoVerticalResizeObserver?: ResizeObserver;\r\n _root: any;\r\n\r\n constructor( options: any = {} )\r\n {\r\n var root = document.createElement( 'div' );\r\n root.className = 'lexarea';\r\n if ( options.id )\r\n {\r\n root.id = options.id;\r\n }\r\n if ( options.className )\r\n {\r\n root.className += ' ' + options.className;\r\n }\r\n\r\n var width: any = options.width || '100%';\r\n var height: any = options.height || '100%';\r\n\r\n // This has default options..\r\n this.setLimitBox( options.minWidth, options.minHeight, options.maxWidth, options.maxHeight );\r\n\r\n if ( width.constructor == Number )\r\n {\r\n width = `${width}px`;\r\n }\r\n if ( height.constructor == Number )\r\n {\r\n height = `${height}px`;\r\n }\r\n\r\n root.style.width = width;\r\n root.style.height = height;\r\n\r\n this.root = root;\r\n this.size = [ this.root.offsetWidth, this.root.offsetHeight ];\r\n\r\n let lexroot = document.getElementById( 'lexroot' );\r\n if ( lexroot && !options.skipAppend )\r\n {\r\n lexroot.appendChild( this.root );\r\n }\r\n\r\n if ( options.layout )\r\n {\r\n this.setLayout( options.layout );\r\n }\r\n\r\n let overlay = options.overlay;\r\n\r\n if ( overlay )\r\n {\r\n this.root.classList.add( 'overlay-' + overlay );\r\n\r\n if ( options.left )\r\n {\r\n this.root.style.left = options.left;\r\n }\r\n else if ( options.right )\r\n {\r\n this.root.style.right = options.right;\r\n }\r\n else if ( options.top )\r\n {\r\n this.root.style.top = options.top;\r\n }\r\n else if ( options.bottom )\r\n {\r\n this.root.style.bottom = options.bottom;\r\n }\r\n\r\n const draggable = options.draggable ?? true;\r\n if ( draggable )\r\n {\r\n LX.makeDraggable( root, options );\r\n }\r\n\r\n if ( options.resizeable )\r\n {\r\n root.classList.add( 'resizeable' );\r\n }\r\n\r\n if ( options.resize )\r\n {\r\n this.splitBar = document.createElement( 'div' );\r\n let type = ( overlay == 'left' ) || ( overlay == 'right' ) ? 'horizontal' : 'vertical';\r\n this.type = overlay;\r\n this.splitBar.className = 'lexsplitbar ' + type;\r\n\r\n if ( overlay == 'right' )\r\n {\r\n this.splitBar.style.width = LX.DEFAULT_SPLITBAR_SIZE + 'px';\r\n this.splitBar.style.left = -( LX.DEFAULT_SPLITBAR_SIZE / 2.0 ) + 'px';\r\n }\r\n else if ( overlay == 'left' )\r\n {\r\n let size = Math.min( document.body.clientWidth - LX.DEFAULT_SPLITBAR_SIZE, this.root.clientWidth );\r\n this.splitBar.style.width = LX.DEFAULT_SPLITBAR_SIZE + 'px';\r\n this.splitBar.style.left = size + ( LX.DEFAULT_SPLITBAR_SIZE / 2.0 ) + 'px';\r\n }\r\n else if ( overlay == 'top' )\r\n {\r\n let size = Math.min( document.body.clientHeight - LX.DEFAULT_SPLITBAR_SIZE,\r\n this.root.clientHeight );\r\n this.splitBar.style.height = LX.DEFAULT_SPLITBAR_SIZE + 'px';\r\n this.splitBar.style.top = size + ( LX.DEFAULT_SPLITBAR_SIZE / 2.0 ) + 'px';\r\n }\r\n else if ( overlay == 'bottom' )\r\n {\r\n this.splitBar.style.height = LX.DEFAULT_SPLITBAR_SIZE + 'px';\r\n this.splitBar.style.top = -( LX.DEFAULT_SPLITBAR_SIZE / 2.0 ) + 'px';\r\n }\r\n\r\n this.splitBar.addEventListener( 'mousedown', innerMouseDown );\r\n this.root.appendChild( this.splitBar );\r\n\r\n const that = this;\r\n let lastMousePosition = [ 0, 0 ];\r\n\r\n function innerMouseDown( e: MouseEvent )\r\n {\r\n const doc = that.root.ownerDocument;\r\n doc.addEventListener( 'mousemove', innerMouseMove );\r\n doc.addEventListener( 'mouseup', innerMouseUp );\r\n lastMousePosition[0] = e.x;\r\n lastMousePosition[1] = e.y;\r\n e.stopPropagation();\r\n e.preventDefault();\r\n document.body.classList.add( 'nocursor' );\r\n that.splitBar.classList.add( 'nocursor' );\r\n }\r\n\r\n function innerMouseMove( e: MouseEvent )\r\n {\r\n switch ( that.type )\r\n {\r\n case 'right':\r\n var dt = lastMousePosition[0] - e.x;\r\n var size: number = that.root.offsetWidth + dt;\r\n that.root.style.width = size + 'px';\r\n break;\r\n case 'left':\r\n var dt = lastMousePosition[0] - e.x;\r\n var size: number = Math.min( document.body.clientWidth - LX.DEFAULT_SPLITBAR_SIZE,\r\n that.root.offsetWidth - dt );\r\n that.root.style.width = size + 'px';\r\n that.splitBar.style.left = size + LX.DEFAULT_SPLITBAR_SIZE / 2 + 'px';\r\n break;\r\n case 'top':\r\n var dt = lastMousePosition[1] - e.y;\r\n var size: number = Math.min( document.body.clientHeight - LX.DEFAULT_SPLITBAR_SIZE,\r\n that.root.offsetHeight - dt );\r\n that.root.style.height = size + 'px';\r\n that.splitBar.style.top = size + LX.DEFAULT_SPLITBAR_SIZE / 2 + 'px';\r\n break;\r\n case 'bottom':\r\n var dt = lastMousePosition[1] - e.y;\r\n var size: number = that.root.offsetHeight + dt;\r\n that.root.style.height = size + 'px';\r\n break;\r\n }\r\n\r\n lastMousePosition[0] = e.x;\r\n lastMousePosition[1] = e.y;\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n // Resize events\r\n if ( that.onresize )\r\n {\r\n that.onresize( that.root.getBoundingClientRect() );\r\n }\r\n }\r\n\r\n function innerMouseUp( e: MouseEvent )\r\n {\r\n const doc = that.root.ownerDocument;\r\n doc.removeEventListener( 'mousemove', innerMouseMove );\r\n doc.removeEventListener( 'mouseup', innerMouseUp );\r\n document.body.classList.remove( 'nocursor' );\r\n that.splitBar.classList.remove( 'nocursor' );\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @method attach\r\n * @param {Element} content child to append to area (e.g. a Panel)\r\n */\r\n\r\n attach( content: any )\r\n {\r\n // Append to last split section if area has been split\r\n if ( this.sections.length )\r\n {\r\n this.sections[1].attach( content );\r\n return;\r\n }\r\n\r\n if ( !content )\r\n {\r\n throw ( 'no content to attach' );\r\n }\r\n\r\n content.parent = this;\r\n\r\n let element = content.root ? content.root : content;\r\n this.root.appendChild( element );\r\n }\r\n\r\n /**\r\n * @method setLayout\r\n * @description Automatically split the area to generate the desired layout\r\n * @param {Array} layout\r\n */\r\n\r\n setLayout( layout: any )\r\n {\r\n this.layout = LX.deepCopy( layout );\r\n\r\n if ( !layout.splits )\r\n {\r\n console.warn( 'Area layout has no splits!' );\r\n return;\r\n }\r\n\r\n const _splitArea = ( area: Area, layout: any ) => {\r\n if ( layout.className )\r\n {\r\n area.root.className += ` ${layout.className}`;\r\n }\r\n\r\n if ( !layout.splits )\r\n {\r\n return;\r\n }\r\n\r\n const type = layout.type ?? 'horizontal';\r\n const resize = layout.resize ?? true;\r\n const minimizable = layout.minimizable ?? false;\r\n const [ splitA, splitB ] = area.split( { type, resize, minimizable,\r\n sizes: [ layout.splits[0].size, layout.splits[1].size ] } );\r\n\r\n _splitArea( splitA, layout.splits[0] );\r\n _splitArea( splitB, layout.splits[1] );\r\n };\r\n\r\n _splitArea( this, layout );\r\n }\r\n\r\n /**\r\n * @method split\r\n * @param {Object} options\r\n * type: Split mode (horizontal, vertical) [\"horizontal\"]\r\n * sizes: CSS Size of each new area (Array) [\"50%\", \"50%\"]\r\n * resize: Allow area manual resizing [true]\r\n * sizes: \"Allow the area to be minimized [false]\r\n */\r\n\r\n split( options: any = {} )\r\n {\r\n if ( this.sections.length )\r\n {\r\n // In case Area has been split before, get 2nd section as root\r\n this.offset = this.root.childNodes[0].offsetHeight; // store offset to take into account when resizing\r\n this._root = this.sections[0].root;\r\n this.root = this.sections[1].root;\r\n }\r\n\r\n const type = options.type ?? 'horizontal';\r\n const sizes = options.sizes || [ '50%', '50%' ];\r\n const auto = ( options.sizes === 'auto' )\r\n || ( options.sizes && options.sizes[0] == 'auto' && options.sizes[1] == 'auto' );\r\n const rect = this.root.getBoundingClientRect();\r\n\r\n // Secondary area fills space\r\n if ( !sizes[1] || ( sizes[0] != 'auto' && sizes[1] == 'auto' ) )\r\n {\r\n let size = sizes[0];\r\n let margin = options.top ? options.top : 0;\r\n if ( size.constructor == Number )\r\n {\r\n size += margin;\r\n size = `${size}px`;\r\n }\r\n\r\n sizes[1] = 'calc( 100% - ' + size + ' )';\r\n }\r\n\r\n let minimizable = options.minimizable ?? false;\r\n let resize = ( options.resize ?? true ) || minimizable;\r\n let fixedSize = options.fixedSize ?? !resize;\r\n let splitbarOffset = 0;\r\n let primarySize = [];\r\n let secondarySize = [];\r\n\r\n this.offset = 0;\r\n\r\n if ( resize )\r\n {\r\n this.resize = resize;\r\n this.splitBar = document.createElement( 'div' );\r\n this.splitBar.className = 'lexsplitbar ' + type;\r\n\r\n if ( type == 'horizontal' )\r\n {\r\n this.splitBar.style.width = LX.DEFAULT_SPLITBAR_SIZE + 'px';\r\n }\r\n else\r\n {\r\n this.splitBar.style.height = LX.DEFAULT_SPLITBAR_SIZE + 'px';\r\n }\r\n\r\n this.splitBar.addEventListener( 'mousedown', innerMouseDown );\r\n\r\n splitbarOffset = LX.DEFAULT_SPLITBAR_SIZE / 2; // updates\r\n }\r\n\r\n if ( type == 'horizontal' )\r\n {\r\n this.root.style.display = 'flex';\r\n\r\n if ( !fixedSize )\r\n {\r\n const parentWidth = rect.width;\r\n const leftPx = LX.parsePixelSize( sizes[0], parentWidth );\r\n const rightPx = LX.parsePixelSize( sizes[1], parentWidth );\r\n const leftPercent = ( leftPx / parentWidth ) * 100;\r\n const rightPercent = ( rightPx / parentWidth ) * 100;\r\n\r\n // Style using percentages\r\n primarySize[0] = `calc(${leftPercent}% - ${splitbarOffset}px)`;\r\n secondarySize[0] = `calc(${rightPercent}% - ${splitbarOffset}px)`;\r\n }\r\n else\r\n {\r\n primarySize[0] = `calc(${sizes[0]} - ${splitbarOffset}px)`;\r\n secondarySize[0] = `calc(${sizes[1]} - ${splitbarOffset}px)`;\r\n }\r\n\r\n primarySize[1] = '100%';\r\n secondarySize[1] = '100%';\r\n }\r\n // vertical\r\n else\r\n {\r\n if ( auto )\r\n {\r\n primarySize[1] = 'auto';\r\n secondarySize[1] = 'auto';\r\n }\r\n else if ( !fixedSize )\r\n {\r\n const parentHeight = rect.height;\r\n const topPx = LX.parsePixelSize( sizes[0], parentHeight );\r\n const bottomPx = LX.parsePixelSize( sizes[1], parentHeight );\r\n const topPercent = ( topPx / parentHeight ) * 100;\r\n const bottomPercent = ( bottomPx / parentHeight ) * 100;\r\n\r\n primarySize[1] = sizes[0] == 'auto' ? 'auto' : `calc(${topPercent}% - ${splitbarOffset}px)`;\r\n secondarySize[1] = sizes[1] == 'auto' ? 'auto' : `calc(${bottomPercent}% - ${splitbarOffset}px)`;\r\n }\r\n else\r\n {\r\n primarySize[1] = sizes[0] == 'auto' ? 'auto' : `calc(${sizes[0]} - ${splitbarOffset}px)`;\r\n secondarySize[1] = sizes[1] == 'auto' ? 'auto' : `calc(${sizes[1]} - ${splitbarOffset}px)`;\r\n }\r\n\r\n primarySize[0] = '100%';\r\n secondarySize[0] = '100%';\r\n }\r\n\r\n // Create areas\r\n let area1 = new Area( { width: primarySize[0], height: primarySize[1], skipAppend: true,\r\n className: 'split' + ( options.menubar || options.sidebar ? '' : ' origin' ) } );\r\n let area2 = new Area( { width: secondarySize[0], height: secondarySize[1], skipAppend: true,\r\n className: 'split' } );\r\n\r\n /*\r\n If the parent area is not in the DOM, we need to wait for the resize event to get the its correct size\r\n and set the sizes of the split areas accordingly.\r\n */\r\n if ( !fixedSize && ( !rect.width || !rect.height ) )\r\n {\r\n const observer = new ResizeObserver( ( entries ) => {\r\n console.assert( entries.length == 1, 'AreaResizeObserver: more than one entry' );\r\n\r\n const rect = entries[0].contentRect;\r\n if ( !rect.width || !rect.height )\r\n {\r\n return;\r\n }\r\n\r\n this._update( [ rect.width, rect.height ], false );\r\n\r\n // On auto splits, we only need to set the size of the parent area\r\n if ( !auto )\r\n {\r\n if ( type == 'horizontal' )\r\n {\r\n const parentWidth = rect.width;\r\n const leftPx = LX.parsePixelSize( sizes[0], parentWidth );\r\n const rightPx = LX.parsePixelSize( sizes[1], parentWidth );\r\n const leftPercent = ( leftPx / parentWidth ) * 100;\r\n const rightPercent = ( rightPx / parentWidth ) * 100;\r\n\r\n // Style using percentages\r\n primarySize[0] = `calc(${leftPercent}% - ${splitbarOffset}px)`;\r\n secondarySize[0] = `calc(${rightPercent}% - ${splitbarOffset}px)`;\r\n }\r\n // vertical\r\n else\r\n {\r\n const parentHeight = rect.height;\r\n const topPx = LX.parsePixelSize( sizes[0], parentHeight );\r\n const bottomPx = LX.parsePixelSize( sizes[1], parentHeight );\r\n const topPercent = ( topPx / parentHeight ) * 100;\r\n const bottomPercent = ( bottomPx / parentHeight ) * 100;\r\n\r\n primarySize[1] = sizes[0] == 'auto' ? 'auto' : `calc(${topPercent}% - ${splitbarOffset}px)`;\r\n secondarySize[1] = sizes[1] == 'auto'\r\n ? 'auto'\r\n : `calc(${bottomPercent}% - ${splitbarOffset}px)`;\r\n }\r\n\r\n area1.root.style.width = primarySize[0];\r\n area1.root.style.height = primarySize[1];\r\n\r\n area2.root.style.width = secondarySize[0];\r\n area2.root.style.height = secondarySize[1];\r\n }\r\n\r\n area1._update();\r\n area2._update();\r\n\r\n // Stop observing\r\n observer.disconnect();\r\n } );\r\n\r\n // Observe the parent area until the DOM is ready\r\n // and the size is set correctly.\r\n LX.doAsync( () => {\r\n observer.observe( this.root );\r\n }, 100 );\r\n }\r\n\r\n if ( auto && type == 'vertical' )\r\n {\r\n // Listen resize event on first area\r\n this._autoVerticalResizeObserver = new ResizeObserver( ( entries ) => {\r\n for ( const entry of entries )\r\n {\r\n const size = LX.getComputedSize( entry.target );\r\n area2.root.style.height = 'calc(100% - ' + ( size.height ) + 'px )';\r\n }\r\n } );\r\n\r\n this._autoVerticalResizeObserver.observe( area1.root );\r\n }\r\n\r\n // Being minimizable means it's also resizeable!\r\n if ( resize && minimizable )\r\n {\r\n this.splitExtended = false;\r\n\r\n // Keep state of the animation when ends...\r\n area2.root.addEventListener( 'animationend', ( e: any ) => {\r\n const opacity = getComputedStyle( area2.root ).opacity;\r\n area2.root.classList.remove( e.animationName + '-' + type );\r\n area2.root.style.opacity = opacity;\r\n LX.flushCss( area2.root );\r\n } );\r\n\r\n this.splitBar.addEventListener( 'contextmenu', ( e: any ) => {\r\n e.preventDefault();\r\n LX.addContextMenu( null, e, ( c: ContextMenu ) => {\r\n c.add( 'Extend', { disabled: this.splitExtended, callback: () => {\r\n this.extend();\r\n } } );\r\n c.add( 'Reduce', { disabled: !this.splitExtended, callback: () => {\r\n this.reduce();\r\n } } );\r\n } );\r\n } );\r\n }\r\n\r\n area1.parentArea = this;\r\n area2.parentArea = this;\r\n\r\n this.root.appendChild( area1.root );\r\n\r\n if ( resize )\r\n {\r\n this.root.appendChild( this.splitBar );\r\n }\r\n\r\n this.root.appendChild( area2.root );\r\n\r\n this.sections = [ area1, area2 ];\r\n this.type = type;\r\n\r\n // Update sizes\r\n this._update( rect.width || rect.height ? [ rect.width, rect.height ] : undefined );\r\n\r\n if ( !resize )\r\n {\r\n return this.sections;\r\n }\r\n\r\n const that = this;\r\n\r\n function innerMouseDown( e: MouseEvent )\r\n {\r\n const doc = that.root.ownerDocument;\r\n doc.addEventListener( 'mousemove', innerMouseMove );\r\n doc.addEventListener( 'mouseup', innerMouseUp );\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n\r\n function innerMouseMove( e: MouseEvent )\r\n {\r\n const rect = that.root.getBoundingClientRect();\r\n if ( ( ( e.x ) < rect.x || ( e.x ) > ( rect.x + rect.width ) )\r\n || ( ( e.y ) < rect.y || ( e.y ) > ( rect.y + rect.height ) ) )\r\n {\r\n return;\r\n }\r\n\r\n if ( that.type == 'horizontal' )\r\n {\r\n that._moveSplit( -e.movementX );\r\n }\r\n else\r\n {\r\n that._moveSplit( -e.movementY );\r\n }\r\n\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n\r\n function innerMouseUp( e: MouseEvent )\r\n {\r\n const doc = that.root.ownerDocument;\r\n doc.removeEventListener( 'mousemove', innerMouseMove );\r\n doc.removeEventListener( 'mouseup', innerMouseUp );\r\n }\r\n\r\n return this.sections;\r\n }\r\n\r\n /**\r\n * @method setLimitBox\r\n * Set min max for width and height\r\n */\r\n setLimitBox( minw = 0, minh = 0, maxw = Infinity, maxh = Infinity )\r\n {\r\n this.minWidth = minw;\r\n this.minHeight = minh;\r\n this.maxWidth = maxw;\r\n this.maxHeight = maxh;\r\n\r\n if ( minw != 0 ) this.root.style.minWidth = `${minw}px`;\r\n if ( minh != 0 ) this.root.style.minHeight = `${minh}px`;\r\n if ( maxw != Infinity ) this.root.style.maxWidth = `${maxw}px`;\r\n if ( maxh != Infinity ) this.root.style.maxHeight = `${maxh}px`;\r\n }\r\n\r\n /**\r\n * @method resize\r\n * Resize element\r\n */\r\n setSize( size: any[] )\r\n {\r\n let [ width, height ] = size;\r\n\r\n if ( width != undefined && width.constructor == Number )\r\n {\r\n width = `${width}px`;\r\n }\r\n\r\n if ( height != undefined && height.constructor == Number )\r\n {\r\n height = `${height}px`;\r\n }\r\n\r\n if ( width )\r\n {\r\n this.root.style.width = width;\r\n }\r\n\r\n if ( height )\r\n {\r\n this.root.style.height = height;\r\n }\r\n\r\n if ( this.onresize )\r\n {\r\n this.onresize( this.root.getBoundingClientRect() );\r\n }\r\n\r\n LX.doAsync( () => {\r\n this.size = [ this.root.clientWidth, this.root.clientHeight ];\r\n this.propagateEvent( 'onresize' );\r\n }, 150 );\r\n }\r\n\r\n /**\r\n * @method extend\r\n * Hide 2nd area split\r\n */\r\n extend()\r\n {\r\n if ( this.splitExtended )\r\n {\r\n return;\r\n }\r\n\r\n let [ area1, area2 ] = this.sections;\r\n this.splitExtended = true;\r\n\r\n area1.root.classList.add( `maximize-${this.type}` );\r\n area2.root.classList.add( `minimize-${this.type}` );\r\n area2.root.classList.add( `fadeout-${this.type}` );\r\n area2.root.classList.remove( `fadein-${this.type}` );\r\n\r\n if ( this.type == 'vertical' )\r\n {\r\n this.offset = area2.root.offsetHeight;\r\n this._moveSplit( -Infinity, true );\r\n }\r\n else\r\n {\r\n this.offset = area2.root.offsetWidth - 8; // Force some height here...\r\n this._moveSplit( -Infinity, true, 8 );\r\n }\r\n\r\n LX.doAsync( () => {\r\n this.propagateEvent( 'onresize' );\r\n }, 100 );\r\n }\r\n\r\n /**\r\n * @method reduce\r\n * Show 2nd area split\r\n */\r\n reduce()\r\n {\r\n if ( !this.splitExtended )\r\n {\r\n return;\r\n }\r\n\r\n this.splitExtended = false;\r\n\r\n let [ area1, area2 ] = this.sections;\r\n\r\n area1.root.classList.add( `minimize-${this.type}` );\r\n area2.root.classList.add( `maximize-${this.type}` );\r\n area2.root.classList.add( `fadein-${this.type}` );\r\n area2.root.classList.remove( `fadeout-${this.type}` );\r\n\r\n this._moveSplit( this.offset );\r\n\r\n LX.doAsync( () => {\r\n this.propagateEvent( 'onresize' );\r\n }, 100 );\r\n }\r\n\r\n /**\r\n * @method hide\r\n * Hide element\r\n */\r\n hide()\r\n {\r\n this.root.classList.add( 'hidden' );\r\n }\r\n\r\n /**\r\n * @method show\r\n * Show element if it is hidden\r\n */\r\n show()\r\n {\r\n this.root.classList.remove( 'hidden' );\r\n }\r\n\r\n /**\r\n * @method toggle\r\n * Toggle element if it is hidden\r\n */\r\n toggle( force: boolean )\r\n {\r\n this.root.classList.toggle( 'hidden', force );\r\n }\r\n\r\n /**\r\n * @method propagateEvent\r\n */\r\n\r\n propagateEvent( eventName: string )\r\n {\r\n for ( let i = 0; i < this.sections.length; i++ )\r\n {\r\n const area = this.sections[i];\r\n\r\n if ( area[eventName] )\r\n {\r\n area[eventName].call( this, area.root.getBoundingClientRect() );\r\n }\r\n\r\n area.propagateEvent( eventName );\r\n }\r\n }\r\n\r\n /**\r\n * @method addPanel\r\n * @param {Object} options\r\n * Options to create a Panel\r\n */\r\n\r\n addPanel( options: any )\r\n {\r\n let panel = new Panel( options );\r\n this.attach( panel );\r\n this.panels.push( panel );\r\n return panel;\r\n }\r\n\r\n /**\r\n * @method addMenubar\r\n * @param {Array} items Items to fill the menubar\r\n * @param {Object} options:\r\n * float: Justify content (left, center, right) [left]\r\n * sticky: Fix menubar at the top [true]\r\n */\r\n\r\n addMenubar( items: any[], options: any = {} )\r\n {\r\n let menubar = new Menubar( items, options );\r\n\r\n LX.menubars.push( menubar );\r\n\r\n const [ bar, content ] = this.split( { type: 'vertical', sizes: [ '48px', null ], resize: false,\r\n menubar: true } );\r\n menubar.siblingArea = content;\r\n\r\n bar.attach( menubar );\r\n bar.isMenubar = true;\r\n\r\n if ( options.sticky ?? true )\r\n {\r\n bar.root.className += ' sticky top-0 z-1000';\r\n }\r\n\r\n if ( options.parentClass )\r\n {\r\n bar.root.className += ` ${options.parentClass}`;\r\n }\r\n\r\n return menubar;\r\n }\r\n\r\n /**\r\n * @method addSidebar\r\n * @param {Function} callback Function to fill the sidebar\r\n * @param {Object} options: Sidebar options\r\n * width: Width of the sidebar [16rem]\r\n * side: Side to attach the sidebar (left|right) [left]\r\n */\r\n\r\n addSidebar( callback: any, options: any = {} )\r\n {\r\n let sidebar = new LX.Sidebar( { callback, ...options } );\r\n\r\n if ( callback )\r\n {\r\n callback( sidebar );\r\n }\r\n\r\n // Generate DOM elements after adding all entries\r\n sidebar.update();\r\n\r\n LX.sidebars.push( sidebar );\r\n\r\n const side = options.side ?? 'left';\r\n console.assert( side == 'left' || side == 'right', 'Invalid sidebar side: ' + side );\r\n const leftSidebar = side == 'left';\r\n\r\n const width = options.width ?? '16rem';\r\n const sizes = leftSidebar ? [ width, null ] : [ null, width ];\r\n const [ left, right ] = this.split( { type: 'horizontal', sizes, resize: false, sidebar: true } );\r\n sidebar.siblingArea = leftSidebar ? right : left;\r\n\r\n let bar = leftSidebar ? left : right;\r\n bar.attach( sidebar );\r\n bar.isSidebar = true;\r\n\r\n if ( options.parentClass )\r\n {\r\n bar.root.className += ` ${options.parentClass}`;\r\n }\r\n\r\n return sidebar;\r\n }\r\n\r\n /**\r\n * @method addOverlayButtons\r\n * @param {Array} buttons Buttons info\r\n * @param {Object} options:\r\n * float: Where to put the buttons (h: horizontal, v: vertical, t: top, m: middle, b: bottom, l: left, c: center, r: right) [htc]\r\n */\r\n\r\n addOverlayButtons( buttons: any[], options: any = {} )\r\n {\r\n // Add to last split section if area has been split\r\n if ( this.sections.length )\r\n {\r\n return this.sections[1].addOverlayButtons( buttons, options );\r\n }\r\n\r\n console.assert( buttons.constructor == Array && buttons.length !== 0 );\r\n\r\n // Set area to relative to use local position\r\n this.root.style.position = 'relative';\r\n\r\n // Reset if already exists\r\n this.overlayButtons = new AreaOverlayButtons( this, buttons, options );\r\n\r\n return this.overlayButtons;\r\n }\r\n\r\n /**\r\n * @method addTabs\r\n * @param {Object} options:\r\n * parentClass: Add extra class to tab buttons container\r\n */\r\n\r\n addTabs( options: any = {} )\r\n {\r\n const tabs = new Tabs( this, options );\r\n\r\n if ( options.folding )\r\n {\r\n this.parentArea?._disableSplitResize();\r\n // Compensate split bar...\r\n this.root.style.paddingTop = '4px';\r\n }\r\n\r\n return tabs;\r\n }\r\n\r\n _moveSplit( dt: number, forceAnimation: boolean = false, forceWidth: number = 0 )\r\n {\r\n if ( !this.type )\r\n {\r\n throw ( 'No split area' );\r\n }\r\n\r\n if ( dt === undefined )\r\n { // Splitbar didn't move!\r\n return;\r\n }\r\n\r\n // When manual resizing, we don't need the observer anymore\r\n if ( this._autoVerticalResizeObserver )\r\n {\r\n this._autoVerticalResizeObserver.disconnect();\r\n }\r\n\r\n const a1 = this.sections[0];\r\n var a1Root = a1.root;\r\n\r\n if ( !a1Root.classList.contains( 'origin' ) )\r\n {\r\n a1Root = a1Root.parentElement;\r\n }\r\n\r\n const a2 = this.sections[1];\r\n const a2Root = a2.root;\r\n const splitData = '- ' + LX.DEFAULT_SPLITBAR_SIZE + 'px';\r\n\r\n let transition = null;\r\n if ( !forceAnimation )\r\n {\r\n // Remove transitions for this change..\r\n transition = a1Root.style.transition;\r\n a1Root.style.transition = a2Root.style.transition = 'none';\r\n // LX.flushCss( a1Root );\r\n }\r\n\r\n if ( this.type == 'horizontal' )\r\n {\r\n var size = Math.max( a2Root.offsetWidth + dt, parseInt( a2.minWidth ) );\r\n if ( forceWidth ) size = forceWidth;\r\n\r\n const parentWidth = this.size[0];\r\n const rightPercent = ( size / parentWidth ) * 100;\r\n const leftPercent = Math.max( 0, 100 - rightPercent );\r\n\r\n a1Root.style.width = `-moz-calc(${leftPercent}% ${splitData})`;\r\n a1Root.style.width = `-webkit-calc( ${leftPercent}% ${splitData})`;\r\n a1Root.style.width = `calc( ${leftPercent}% ${splitData})`;\r\n a2Root.style.width = `${rightPercent}%`;\r\n a2Root.style.width = `${rightPercent}%`;\r\n a2Root.style.width = `${rightPercent}%`;\r\n\r\n if ( a1.maxWidth != Infinity )\r\n {\r\n a2Root.style.minWidth = `calc( 100% - ${parseInt( a1.maxWidth )}px )`;\r\n }\r\n }\r\n else\r\n {\r\n const parentHeight = this.size[1];\r\n var size = Math.max( ( a2Root.offsetHeight + dt ) + a2.offset, parseInt( a2.minHeight ) );\r\n size = Math.min( parentHeight - LX.DEFAULT_SPLITBAR_SIZE, size );\r\n if ( forceWidth ) size = forceWidth;\r\n\r\n const bottomPercent = ( size / parentHeight ) * 100;\r\n const topPercent = Math.max( 0, 100 - bottomPercent );\r\n\r\n a1Root.style.height = `-moz-calc(${topPercent}% ${splitData})`;\r\n a1Root.style.height = `-webkit-calc( ${topPercent}% ${splitData})`;\r\n a1Root.style.height = `calc( ${topPercent}% ${splitData})`;\r\n a2Root.style.height = `${bottomPercent}%`;\r\n a2Root.style.height = `${bottomPercent}%`;\r\n a2Root.style.height = `${bottomPercent}%`;\r\n\r\n if ( a1.maxHeight != Infinity )\r\n {\r\n a2Root.style.minHeight = `calc( 100% - ${parseInt( a1.maxHeight )}px )`;\r\n }\r\n }\r\n\r\n if ( !forceAnimation )\r\n {\r\n // Reapply transitions\r\n a1Root.style.transition = a2Root.style.transition = transition;\r\n }\r\n\r\n LX.doAsync( () => {\r\n this._update();\r\n this.propagateEvent( 'onresize' );\r\n }, 10 );\r\n }\r\n\r\n _disableSplitResize()\r\n {\r\n this.resize = false;\r\n this.splitBar.remove();\r\n delete this.splitBar;\r\n }\r\n\r\n _update( newSize?: any[], propagate: boolean = true )\r\n {\r\n if ( !newSize )\r\n {\r\n const rect = this.root.getBoundingClientRect();\r\n this.size = [ rect.width, rect.height ];\r\n }\r\n else\r\n {\r\n this.size = newSize;\r\n }\r\n\r\n if ( propagate )\r\n {\r\n for ( var i = 0; i < this.sections.length; i++ )\r\n {\r\n this.sections[i]._update();\r\n }\r\n }\r\n }\r\n}\r\n\r\nLX.Area = Area;\r\n","// Utils.ts @jxarco\r\n\r\nimport { Area } from './Area';\r\nimport { LX } from './Namespace';\r\nimport { Panel } from './Panel';\r\nimport { vec2 } from './Vec2';\r\n\r\nfunction clamp( num: number, min: number, max: number )\r\n{\r\n return Math.min( Math.max( num, min ), max );\r\n}\r\nfunction round( number: number, precision?: number )\r\n{\r\n return precision == 0\r\n ? Math.floor( number )\r\n : +( number.toFixed( precision ?? 2 ).replace( /([0-9]+(\\.[0-9]+[1-9])?)(\\.?0+$)/, '$1' ) );\r\n}\r\nfunction remapRange( oldValue: number, oldMin: number, oldMax: number, newMin: number, newMax: number )\r\n{\r\n return ( ( ( oldValue - oldMin ) * ( newMax - newMin ) ) / ( oldMax - oldMin ) ) + newMin;\r\n}\r\n\r\nLX.clamp = clamp;\r\nLX.round = round;\r\nLX.remapRange = remapRange;\r\n\r\n// Timer that works everywhere (from litegraph.js)\r\nif ( typeof performance != 'undefined' )\r\n{\r\n LX.getTime = performance.now.bind( performance );\r\n}\r\nelse if ( typeof Date != 'undefined' && Date.now )\r\n{\r\n LX.getTime = Date.now.bind( Date );\r\n}\r\nelse\r\n{\r\n LX.getTime = function()\r\n {\r\n return new Date().getTime();\r\n };\r\n}\r\n\r\nlet ASYNC_ENABLED = true;\r\n\r\n/**\r\n * @method doAsync\r\n * @description Call a function asynchronously\r\n * @param {Function} fn Function to call\r\n * @param {Number} ms Time to wait until calling the function (in milliseconds)\r\n */\r\nfunction doAsync( fn: () => void, ms: number )\r\n{\r\n if ( ASYNC_ENABLED )\r\n {\r\n setTimeout( fn, ms ?? 0 );\r\n }\r\n else\r\n {\r\n fn();\r\n }\r\n}\r\n\r\nLX.doAsync = doAsync;\r\n\r\n/**\r\n * @method flushCss\r\n * @description By reading the offsetHeight property, we are forcing the browser to flush\r\n * the pending CSS changes (which it does to ensure the value obtained is accurate).\r\n * @param {HTMLElement} element\r\n */\r\nfunction flushCss( element: HTMLElement )\r\n{\r\n element.offsetHeight;\r\n}\r\n\r\nLX.flushCss = flushCss;\r\n\r\n/**\r\n * @method deleteElement\r\n * @param {HTMLElement} element\r\n */\r\nfunction deleteElement( element: HTMLElement )\r\n{\r\n if ( element ) element.remove();\r\n}\r\n\r\nLX.deleteElement = deleteElement;\r\n\r\n/**\r\n * @method toCamelCase\r\n * @param {String} str\r\n */\r\nfunction toCamelCase( str: string )\r\n{\r\n return str.toLowerCase().replace( /[^a-zA-Z0-9]+(.)/g, ( _, chr ) => chr.toUpperCase() );\r\n}\r\n\r\nLX.toCamelCase = toCamelCase;\r\n\r\n/**\r\n * @method toTitleCase\r\n * @param {String} str\r\n */\r\nfunction toTitleCase( str: string )\r\n{\r\n return str.replace( /-/g, ' ' ).toLowerCase().replace( /\\b\\w/g, ( char ) => char.toUpperCase() );\r\n}\r\n\r\nLX.toTitleCase = toTitleCase;\r\n\r\n/**\r\n * @method toKebabCase\r\n * @param {String} str\r\n */\r\nfunction toKebabCase( str: string )\r\n{\r\n return str.replace( /[A-Z]/g, ( m ) => '-' + m.toLowerCase() );\r\n}\r\n\r\nLX.toKebabCase = toKebabCase;\r\n\r\n/**\r\n * @method getSupportedDOMName\r\n * @description Convert a text string to a valid DOM name\r\n * @param {String} text Original text\r\n */\r\nfunction getSupportedDOMName( text: string )\r\n{\r\n console.assert( typeof text == 'string', 'getSupportedDOMName: Text is not a string!' );\r\n\r\n let name = text.trim();\r\n\r\n // Replace specific known symbols\r\n name = name.replace( /@/g, '_at_' ).replace( /\\+/g, '_plus_' ).replace( /\\./g, '_dot_' );\r\n name = name.replace( /[^a-zA-Z0-9_-]/g, '_' );\r\n\r\n // prefix with an underscore if needed\r\n if ( /^[0-9]/.test( name ) )\r\n {\r\n name = '_' + name;\r\n }\r\n\r\n return name;\r\n}\r\n\r\nLX.getSupportedDOMName = getSupportedDOMName;\r\n\r\n/**\r\n * @method has\r\n * @description Ask if LexGUI is using a specific extension\r\n * @param {String} extensionName Name of the LexGUI extension\r\n */\r\nfunction has( extensionName: string )\r\n{\r\n return ( LX.extensions.indexOf( extensionName ) > -1 );\r\n}\r\n\r\nLX.has = has;\r\n\r\n/**\r\n * @method getExtension\r\n * @description Get a extension from a path/url/filename\r\n * @param {String} name\r\n */\r\nfunction getExtension( name: string )\r\n{\r\n return name.includes( '.' ) ? name.split( '.' ).pop() : null;\r\n}\r\n\r\nLX.getExtension = getExtension;\r\n\r\n/**\r\n * @method stripHTML\r\n * @description Cleans any DOM element string to get only the text\r\n * @param {String} html\r\n */\r\nfunction stripHTML( html: string )\r\n{\r\n const div = document.createElement( 'div' );\r\n div.innerHTML = html;\r\n return div.textContent || div.innerText || '';\r\n}\r\n\r\nLX.stripHTML = stripHTML;\r\n\r\n/**\r\n * @method stripTags\r\n * @description Cleans any DOM element tags to get only the text\r\n * @param {String} str\r\n * @param {String} allowed\r\n * https://locutus.io/php/strings/strip_tags/index.html\r\n */\r\nfunction stripTags( str: string, allowed: string | undefined )\r\n{\r\n // making sure the allowed arg is a string containing only tags in lowercase (<a><b><c>)\r\n allowed = ( ( ( allowed || '' ) + '' ).toLowerCase().match( /<[a-z][a-z0-9]*>/g ) || [] ).join( '' );\r\n\r\n const tags = /<\\/?([a-z0-9]*)\\b[^>]*>?/gi;\r\n const commentsAndPhpTags = /<!--[\\s\\S]*?-->|<\\?(?:php)?[\\s\\S]*?\\?>/gi;\r\n\r\n let after = str;\r\n // removes the '<' char at the end of the string to replicate PHP's behaviour\r\n after = after.substring( after.length - 1 ) === '<' ? after.substring( 0, after.length - 1 ) : after;\r\n\r\n // recursively remove tags to ensure that the returned string doesn't contain forbidden tags after previous passes (e.g. '<<bait/>switch/>')\r\n while ( true )\r\n {\r\n const before = after;\r\n after = before.replace( commentsAndPhpTags, '' ).replace( tags, function( $0, $1 )\r\n {\r\n return allowed.indexOf( '<' + $1.toLowerCase() + '>' ) > -1 ? $0 : '';\r\n } );\r\n\r\n // return once no more tags are removed\r\n if ( before === after )\r\n {\r\n return after;\r\n }\r\n }\r\n}\r\n\r\nLX.stripTags = stripTags;\r\n\r\n/**\r\n * @method parsePixelSize\r\n * @description Parses any css size and returns a number of pixels\r\n * @param {Number|String} size\r\n * @param {Number} total\r\n */\r\nfunction parsePixelSize( size: number | string, total: number )\r\n{\r\n // Assuming pixels..\r\n if ( size.constructor === Number )\r\n {\r\n return size;\r\n }\r\n\r\n if ( size.constructor === String )\r\n {\r\n const value = parseFloat( size );\r\n\r\n if ( size.endsWith( 'px' ) ) return value; // String pixels\r\n if ( size.endsWith( '%' ) ) return ( value / 100 ) * total; // Percentage\r\n if ( size.endsWith( 'rem' ) || size.endsWith( 'em' ) )\r\n {\r\n const rootFontSize = 16; /*parseFloat(getComputedStyle(document.documentElement).fontSize);*/\r\n return value * rootFontSize;\r\n } // rem unit: assume 16px = 1rem\r\n if ( size.endsWith( 'vw' ) ) return ( value / 100 ) * window.innerWidth; // wViewport units\r\n if ( size.endsWith( 'vh' ) ) return ( value / 100 ) * window.innerHeight; // hViewport units\r\n\r\n // Any CSS calc expression (e.g., \"calc(30% - 4px)\")\r\n if ( size.startsWith( 'calc(' ) )\r\n {\r\n const expr = size.slice( 5, -1 );\r\n const parts = expr.split( /([+\\-])/ ); // [\"30% \", \"-\", \"4px\"]\r\n let result = 0;\r\n let op = '+';\r\n for ( let part of parts )\r\n {\r\n part = part.trim();\r\n if ( part === '+' || part === '-' )\r\n {\r\n op = part;\r\n }\r\n else\r\n {\r\n let value = parsePixelSize( part, total );\r\n result = ( op === '+' ) ? result + value : result - value;\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n }\r\n\r\n throw ( 'Bad size format!' );\r\n}\r\n\r\nLX.parsePixelSize = parsePixelSize;\r\n\r\n/**\r\n * @method deepCopy\r\n * @description Create a deep copy with no references from an object\r\n * @param {Object} obj\r\n */\r\nfunction deepCopy( obj: any )\r\n{\r\n return JSON.parse( JSON.stringify( obj ) );\r\n}\r\n\r\nLX.deepCopy = deepCopy;\r\n\r\nfunction concatTypedArray( arrays: any[], ArrayType: any )\r\n{\r\n let size = arrays.reduce( ( acc, arr ) => acc + arr.length, 0 );\r\n let result = new ArrayType( size ); // generate just one array\r\n let offset = 0;\r\n for ( let i = 0; i < arrays.length; ++i )\r\n {\r\n result.set( arrays[i], offset ); // copy values\r\n offset += arrays[i].length;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nLX.concatTypedArray = concatTypedArray;\r\n\r\n/**\r\n * @method setTheme\r\n * @description Set dark or light theme\r\n * @param {String} colorScheme Name of the scheme\r\n * @param {Boolean} storeLocal Store in localStorage\r\n */\r\nfunction setTheme( colorScheme: string, storeLocal: boolean = true )\r\n{\r\n colorScheme = ( colorScheme == 'light' ) ? 'light' : 'dark';\r\n document.documentElement.setAttribute( 'data-theme', colorScheme );\r\n if ( storeLocal ) localStorage.setItem( 'lxColorScheme', colorScheme );\r\n LX.emitSignal( '@on_new_color_scheme', colorScheme );\r\n}\r\n\r\nLX.setTheme = setTheme;\r\n\r\n/**\r\n * @method getTheme\r\n * @description Gets either \"dark\" or \"light\" theme value\r\n */\r\nfunction getTheme()\r\n{\r\n return document.documentElement.getAttribute( 'data-theme' ) ?? 'dark';\r\n}\r\n\r\nLX.getTheme = getTheme;\r\n\r\n/**\r\n * @method switchTheme\r\n * @description Toggles between \"dark\" and \"light\" themes\r\n */\r\nfunction switchTheme()\r\n{\r\n const currentTheme = getTheme();\r\n setTheme( currentTheme == 'dark' ? 'light' : 'dark' );\r\n}\r\n\r\nLX.switchTheme = switchTheme;\r\n\r\n/**\r\n * @method setSystemTheme\r\n * @description Sets back the system theme\r\n */\r\nfunction setSystemTheme()\r\n{\r\n const currentTheme = ( window.matchMedia && window.matchMedia( '(prefers-color-scheme: light)' ).matches )\r\n ? 'light'\r\n : 'dark';\r\n setTheme( currentTheme );\r\n localStorage.removeItem( 'lxColorScheme' );\r\n\r\n // Reapply listener\r\n if ( LX._mqlPrefersDarkScheme )\r\n {\r\n LX._mqlPrefersDarkScheme.removeEventListener( 'change', LX._onChangeSystemTheme );\r\n LX._mqlPrefersDarkScheme.addEventListener( 'change', LX._onChangeSystemTheme );\r\n }\r\n}\r\n\r\nLX.setSystemTheme = setSystemTheme;\r\n\r\n/**\r\n * @method setThemeColor\r\n * @description Sets a new value for one of the main theme variables\r\n * @param {String} colorName Name of the theme variable\r\n * @param {String} color Color in rgba/hex\r\n */\r\nfunction setThemeColor( colorName: string, color: string )\r\n{\r\n const r: any = document.querySelector( ':root' );\r\n r.style.setProperty( '--' + colorName, color );\r\n}\r\n\r\nLX.setThemeColor = setThemeColor;\r\n\r\n/**\r\n * @method getThemeColor\r\n * @description Get the value for one of the main theme variables\r\n * @param {String} colorName Name of the theme variable\r\n */\r\nfunction getThemeColor( colorName: string )\r\n{\r\n const r: any = document.querySelector( ':root' );\r\n const s = getComputedStyle( r );\r\n const value = s.getPropertyValue( '--' + colorName );\r\n\r\n if ( value.includes( 'light-dark' ) )\r\n {\r\n const currentScheme = s.getPropertyValue( 'color-scheme' );\r\n\r\n if ( currentScheme == 'light' )\r\n {\r\n return value.substring( value.indexOf( '(' ) + 1, value.indexOf( ',' ) ).replace( /\\s/g, '' );\r\n }\r\n else\r\n {\r\n return value.substring( value.indexOf( ',' ) + 1, value.indexOf( ')' ) ).replace( /\\s/g, '' );\r\n }\r\n }\r\n\r\n return value;\r\n}\r\n\r\nLX.getThemeColor = getThemeColor;\r\n\r\n/**\r\n * @method switchSpacing\r\n * @description Toggles between \"default\" and \"compact\" spacing layouts\r\n */\r\nfunction switchSpacing()\r\n{\r\n const currentSpacing = document.documentElement.getAttribute( 'data-spacing' ) ?? 'default';\r\n document.documentElement.setAttribute( 'data-spacing', ( currentSpacing == 'default' ) ? 'compact' : 'default' );\r\n LX.emitSignal( '@on_new_spacing_layout', currentSpacing );\r\n}\r\n\r\nLX.switchSpacing = switchSpacing;\r\n\r\n/**\r\n * @method getBase64Image\r\n * @description Convert an image to a base64 string\r\n * @param {Image} img\r\n */\r\nfunction getBase64Image( img: ImageBitmap )\r\n{\r\n const canvas = document.createElement( 'canvas' );\r\n canvas.width = img.width;\r\n canvas.height = img.height;\r\n const ctx = canvas.getContext( '2d' );\r\n if ( ctx ) ctx.drawImage( img, 0, 0 );\r\n return canvas.toDataURL( 'image/png' );\r\n}\r\n\r\nLX.getBase64Image = getBase64Image;\r\n\r\n/**\r\n * @method hexToRgb\r\n * @description Convert a hexadecimal string to a valid RGB color\r\n * @param {String} hex Hexadecimal color\r\n */\r\nfunction hexToRgb( hex: string )\r\n{\r\n const hexPattern = /^#(?:[A-Fa-f0-9]{3,4}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$/;\r\n if ( !hexPattern.test( hex ) )\r\n {\r\n throw ( `Invalid Hex Color: ${hex}` );\r\n }\r\n\r\n hex = hex.replace( /^#/, '' );\r\n\r\n // Expand shorthand form (#RGB or #RGBA)\r\n if ( hex.length === 3 || hex.length === 4 )\r\n {\r\n hex = hex.split( '' ).map( ( c ) => c + c ).join( '' );\r\n }\r\n\r\n const bigint = parseInt( hex, 16 );\r\n\r\n const r = ( ( bigint >> ( hex.length === 8 ? 24 : 16 ) ) & 255 ) / 255;\r\n const g = ( ( bigint >> ( hex.length === 8 ? 16 : 8 ) ) & 255 ) / 255;\r\n const b = ( ( bigint >> ( hex.length === 8 ? 8 : 0 ) ) & 255 ) / 255;\r\n const a = ( hex.length === 8 ? ( bigint & 255 ) : ( hex.length === 4 ? parseInt( hex.slice( -2 ), 16 ) : 255 ) )\r\n / 255;\r\n\r\n return { r, g, b, a };\r\n}\r\n\r\nLX.hexToRgb = hexToRgb;\r\n\r\n/**\r\n * @method hexToHsv\r\n * @description Convert a hexadecimal string to HSV (0..360|0..1|0..1)\r\n * @param {String} hex Hexadecimal color\r\n */\r\nfunction hexToHsv( hex: string )\r\n{\r\n const rgb = hexToRgb( hex );\r\n return rgbToHsv( rgb );\r\n}\r\n\r\nLX.hexToHsv = hexToHsv;\r\n\r\n/**\r\n * @method rgbToHex\r\n * @description Convert a RGB color to a hexadecimal string\r\n * @param {Object} rgb Object containing RGB color\r\n * @param {Number} scale Use 255 for 0..255 range or 1 for 0..1 range\r\n */\r\nfunction rgbToHex( rgb: any, scale = 255 )\r\n{\r\n const rgbArray = [ rgb.r, rgb.g, rgb.b ];\r\n if ( rgb.a != undefined ) rgbArray.push( rgb.a );\r\n\r\n return (\r\n '#'\r\n + rgbArray.map( ( c ) => {\r\n c = Math.floor( c * scale );\r\n const hex = c.toString( 16 );\r\n return hex.length === 1 ? ( '0' + hex ) : hex;\r\n } ).join( '' )\r\n );\r\n}\r\n\r\nLX.rgbToHex = rgbToHex;\r\n\r\n/**\r\n * @method rgbToCss\r\n * @description Convert a RGB color (0..1) to a CSS color format\r\n * @param {Object} rgb Object containing RGB color\r\n */\r\nfunction rgbToCss( rgb: any )\r\n{\r\n return { r: Math.floor( rgb.r * 255 ), g: Math.floor( rgb.g * 255 ), b: Math.floor( rgb.b * 255 ), a: rgb.a };\r\n}\r\n\r\nLX.rgbToCss = rgbToCss;\r\n\r\n/**\r\n * @method rgbToHsv\r\n * @description Convert a RGB color (0..1) array to HSV (0..360|0..1|0..1)\r\n * @param {Object} rgb Array containing R, G, B\r\n */\r\nfunction rgbToHsv( rgb: any )\r\n{\r\n let { r, g, b, a } = rgb;\r\n a = a ?? 1;\r\n\r\n const max = Math.max( r, g, b );\r\n const min = Math.min( r, g, b );\r\n const d = max - min;\r\n let h = 0;\r\n\r\n if ( d !== 0 )\r\n {\r\n if ( max === r ) h = ( ( g - b ) / d ) % 6;\r\n else if ( max === g ) h = ( b - r ) / d + 2;\r\n else h = ( r - g ) / d + 4;\r\n h *= 60;\r\n if ( h < 0 ) h += 360;\r\n }\r\n\r\n const s = max === 0 ? 0 : ( d / max );\r\n const v = max;\r\n\r\n return { h, s, v, a };\r\n}\r\n\r\nLX.rgbToHsv = rgbToHsv;\r\n\r\n/**\r\n * @method hsvToRgb\r\n * @description Convert an HSV color (0..360|0..1|0..1) to RGB (0..1|0..255)\r\n * @param {Object} hsv containing H, S, V\r\n */\r\nfunction hsvToRgb( hsv: any )\r\n{\r\n const { h, s, v, a } = hsv;\r\n const c = v * s;\r\n const x = c * ( 1 - Math.abs( ( ( h / 60 ) % 2 ) - 1 ) );\r\n const m = v - c;\r\n let r = 0, g = 0, b = 0;\r\n\r\n if ( h < 60 )\r\n {\r\n r = c;\r\n g = x;\r\n b = 0;\r\n }\r\n else if ( h < 120 )\r\n {\r\n r = x;\r\n g = c;\r\n b = 0;\r\n }\r\n else if ( h < 180 )\r\n {\r\n r = 0;\r\n g = c;\r\n b = x;\r\n }\r\n else if ( h < 240 )\r\n {\r\n r = 0;\r\n g = x;\r\n b = c;\r\n }\r\n else if ( h < 300 )\r\n {\r\n r = x;\r\n g = 0;\r\n b = c;\r\n }\r\n else\r\n {\r\n r = c;\r\n g = 0;\r\n b = x;\r\n }\r\n\r\n return { r: ( r + m ), g: ( g + m ), b: ( b + m ), a };\r\n}\r\n\r\nLX.hsvToRgb = hsvToRgb;\r\n\r\n/**\r\n * @method dateFromDateString\r\n * @description Get an instance of Date() from a Date in String format (DD/MM/YYYY)\r\n * @param {String} dateString\r\n */\r\nfunction dateFromDateString( dateString: string )\r\n{\r\n const tokens = dateString.split( '/' );\r\n const day = parseInt( tokens[0] );\r\n const month = parseInt( tokens[1] );\r\n const year = parseInt( tokens[2] );\r\n return new Date( `${month}/${day}/${year}` );\r\n}\r\n\r\nLX.dateFromDateString = dateFromDateString;\r\n\r\n/**\r\n * @method measureRealWidth\r\n * @description Measure the pixel width of a text\r\n * @param {String} value Text to measure\r\n * @param {Number} paddingPlusMargin Padding offset\r\n */\r\nfunction measureRealWidth( value: string, paddingPlusMargin = 8 )\r\n{\r\n var i = document.createElement( 'span' );\r\n i.className = 'lexinputmeasure';\r\n i.innerHTML = value;\r\n document.body.appendChild( i );\r\n var rect = i.getBoundingClientRect();\r\n LX.deleteElement( i );\r\n return rect.width + paddingPlusMargin;\r\n}\r\n\r\nLX.measureRealWidth = measureRealWidth;\r\n\r\n/**\r\n * @method guidGenerator\r\n * @description Get a random unique id\r\n */\r\nfunction guidGenerator()\r\n{\r\n var S4 = function()\r\n {\r\n return ( ( ( 1 + Math.random() ) * 0x10000 ) | 0 ).toString( 16 ).substring( 1 );\r\n };\r\n return ( S4() + '-' + S4() + '-' + S4() );\r\n}\r\n\r\nLX.guidGenerator = guidGenerator;\r\n\r\n/**\r\n * @method escapeRegExp\r\n * @description Helper to escape regexp chars\r\n */\r\nfunction escapeRegExp( str: string )\r\n{\r\n return str.replace( /[.*+?^${}()|[\\]\\\\]/g, '\\\\$&' );\r\n}\r\n\r\nLX.escapeRegExp = escapeRegExp;\r\n\r\n/**\r\n * @method wildcardToRegExp\r\n * @description Helper to get regexs from string using wildcard chars\r\n */\r\nfunction wildcardToRegExp( pattern: string )\r\n{\r\n const escaped = pattern.replace( /([.+^${}()|[\\]\\\\])/g, '\\\\$1' );\r\n const converted = escaped.replace( /\\*/g, '.*' ).replace( /\\?/g, '.' );\r\n return new RegExp( '^' + converted + '$', 'i' );\r\n}\r\n\r\nLX.wildcardToRegExp = wildcardToRegExp;\r\n\r\n/**\r\n * @method buildTextPattern\r\n * @description Create a validation pattern using specific options\r\n * @param {Object} options\r\n * lowercase (Boolean): Text must contain a lowercase char\r\n * uppercase (Boolean): Text must contain an uppercase char\r\n * digit (Boolean): Text must contain a digit\r\n * specialChar (Boolean): Text must contain a special char\r\n * noSpaces (Boolean): Do not allow spaces in text\r\n * minLength (Number): Text minimum length\r\n * maxLength (Number): Text maximum length\r\n * asRegExp (Boolean): Return pattern as Regular Expression instance\r\n */\r\nfunction buildTextPattern( options: any = {} )\r\n{\r\n let patterns = [];\r\n if ( options.lowercase ) patterns.push( '(?=.*[a-z])' );\r\n if ( options.uppercase ) patterns.push( '(?=.*[A-Z])' );\r\n if ( options.digit ) patterns.push( '(?=.*\\\\d)' );\r\n if ( options.specialChar ) patterns.push( '(?=.*[@#$%^&+=!])' );\r\n if ( options.noSpaces ) patterns.push( '(?!.*\\\\s)' );\r\n if ( options.email ) patterns.push( '(^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$)' );\r\n\r\n let minLength = options.minLength || 0;\r\n let maxLength = options.maxLength || ''; // Empty means no max length restriction\r\n\r\n let pattern = `^${patterns.join( '' )}.{${minLength},${maxLength}}$`;\r\n return options.asRegExp ? new RegExp( pattern ) : pattern;\r\n}\r\n\r\nLX.buildTextPattern = buildTextPattern;\r\n\r\n/**\r\n * Checks a value against a set of pattern requirements and returns an array\r\n * of specific error messages for all criteria that failed.\r\n * @param { String } value The string to validate.\r\n * @param { Object } pattern The pattern options\r\n * @returns { Array } An array of error messages for failed criteria.\r\n */\r\nfunction validateValueAtPattern( value: string, pattern: any = {}, ...args: any[] )\r\n{\r\n const errors = [];\r\n const minLength = pattern.minLength || 0;\r\n const maxLength = pattern.maxLength; // undefined means no max limit\r\n\r\n // Length requirements\r\n if ( value.length < minLength ) errors.push( `Must be at least ${minLength} characters long.` );\r\n else if ( maxLength !== undefined && value.length > maxLength )\r\n {\r\n errors.push( `Must be no more than ${maxLength} characters long.` );\r\n }\r\n\r\n // Check for Lowercase, Uppercase, Digits\r\n if ( pattern.lowercase && !/[a-z]/.test( value ) )\r\n {\r\n errors.push( 'Must contain at least one lowercase letter (a-z).' );\r\n }\r\n if ( pattern.uppercase && !/[A-Z]/.test( value ) )\r\n {\r\n errors.push( 'Must contain at least one uppercase letter (A-Z).' );\r\n }\r\n if ( pattern.digit && !/\\d/.test( value ) ) errors.push( 'Must contain at least one number (0-9).' );\r\n\r\n // Check for No Spaces (The original regex was (?!.*\\s), meaning 'not followed by any character and a space')\r\n if ( pattern.noSpaces && /\\s/.test( value ) ) errors.push( 'Must NOT contain any spaces.' );\r\n\r\n // Check for Special Character (using the same set as buildTextPattern)\r\n if ( pattern.specialChar && !/[@#$%^&+=!]/.test( value ) )\r\n {\r\n errors.push( 'Must contain at least one special character (e.g., @, #, $, %, ^, &, +, =, !).' );\r\n }\r\n\r\n // Check email formatting\r\n if ( pattern.email && !/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test( value ) )\r\n {\r\n errors.push( 'Must have a valid email format.' );\r\n }\r\n\r\n // Check match to any other text word\r\n if ( pattern.fieldMatchName && value !== ( args[0] ) ) errors.push( `Must match ${pattern.fieldMatchName} field.` );\r\n\r\n return errors;\r\n}\r\n\r\nLX.validateValueAtPattern = validateValueAtPattern;\r\n\r\n/**\r\n * @method makeDraggable\r\n * @description Allows an element to be dragged\r\n * @param {Element} domEl\r\n * @param {Object} options\r\n * autoAdjust (Bool): Sets in a correct position at the beggining\r\n * dragMargin (Number): Margin of drag container\r\n * onMove (Function): Called each move event\r\n * onDragStart (Function): Called when drag event starts\r\n * updateLayers (Function): Update Zindex of elements to update layers\r\n */\r\nfunction makeDraggable( domEl: any, options: any = {} )\r\n{\r\n let offsetX = 0;\r\n let offsetY = 0;\r\n let currentTarget: any = null;\r\n let targetClass = options.targetClass;\r\n let dragMargin = options.dragMargin ?? 3;\r\n\r\n let _computePosition = ( e: any, top?: number, left?: number ) => {\r\n const nullRect = { x: 0, y: 0, width: 0, height: 0 };\r\n const parentRect = domEl.parentElement ? domEl.parentElement.getBoundingClientRect() : nullRect;\r\n const isFixed = domEl.style.position == 'fixed';\r\n const fixedOffset = isFixed ? new vec2( parentRect.x, parentRect.y ) : new vec2();\r\n left = left ?? e.clientX - offsetX - parentRect.x;\r\n top = top ?? e.clientY - offsetY - parentRect.y;\r\n domEl.style.left =\r\n LX.clamp( left, dragMargin + fixedOffset.x,\r\n fixedOffset.x + parentRect.width - domEl.offsetWidth - dragMargin ) + 'px';\r\n domEl.style.top =\r\n LX.clamp( top, dragMargin + fixedOffset.y,\r\n fixedOffset.y + parentRect.height - domEl.offsetHeight - dragMargin ) + 'px';\r\n domEl.style.translate = 'none'; // Force remove translation\r\n };\r\n\r\n // Initial adjustment\r\n if ( options.autoAdjust )\r\n {\r\n _computePosition( null, parseInt( domEl.style.left ), parseInt( domEl.style.top ) );\r\n }\r\n\r\n let id = LX.guidGenerator();\r\n domEl['draggable-id'] = id;\r\n\r\n const defaultMoveFunc = ( e: any ) => {\r\n if ( !currentTarget )\r\n {\r\n return;\r\n }\r\n\r\n _computePosition( e );\r\n };\r\n\r\n const customMoveFunc = ( e: Event ) => {\r\n if ( !currentTarget )\r\n {\r\n return;\r\n }\r\n\r\n if ( options.onMove )\r\n {\r\n options.onMove( currentTarget );\r\n }\r\n };\r\n\r\n let onMove = options.onMove ? customMoveFunc : defaultMoveFunc;\r\n let onDragStart = options.onDragStart;\r\n\r\n domEl.setAttribute( 'draggable', 'true' );\r\n domEl.addEventListener( 'mousedown', function( e: any )\r\n {\r\n currentTarget = ( e.target.classList.contains( targetClass ) || !targetClass ) ? e.target : null;\r\n } );\r\n\r\n domEl.addEventListener( 'dragstart', function( e: any )\r\n {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n e.stopImmediatePropagation();\r\n\r\n if ( !currentTarget )\r\n {\r\n return;\r\n }\r\n\r\n // Remove image when dragging\r\n var img = new Image();\r\n img.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=';\r\n if ( e.dataTransfer )\r\n {\r\n e.dataTransfer.setDragImage( img, 0, 0 );\r\n e.dataTransfer.effectAllowed = 'move';\r\n }\r\n\r\n const rect = e.target.getBoundingClientRect();\r\n const parentRect = currentTarget.parentElement.getBoundingClientRect();\r\n const isFixed = currentTarget.style.position == 'fixed';\r\n const fixedOffset = isFixed ? new vec2( parentRect.x, parentRect.y ) : new vec2();\r\n offsetX = e.clientX - rect.x - fixedOffset.x;\r\n offsetY = e.clientY - rect.y - fixedOffset.y;\r\n\r\n document.addEventListener( 'mousemove', onMove );\r\n\r\n currentTarget.eventCatched = true;\r\n\r\n if ( options.updateLayers ?? true )\r\n {\r\n // Force active dialog to show on top\r\n if ( LX.activeDraggable )\r\n {\r\n LX.activeDraggable.style.zIndex = LX.DRAGGABLE_Z_INDEX;\r\n }\r\n\r\n LX.activeDraggable = domEl;\r\n LX.activeDraggable.style.zIndex = LX.DRAGGABLE_Z_INDEX + 1;\r\n }\r\n\r\n if ( onDragStart )\r\n {\r\n onDragStart( currentTarget, e );\r\n }\r\n }, false );\r\n\r\n document.addEventListener( 'mouseup', ( e ) => {\r\n if ( currentTarget )\r\n {\r\n currentTarget = null;\r\n document.removeEventListener( 'mousemove', onMove );\r\n }\r\n } );\r\n}\r\n\r\nLX.makeDraggable = makeDraggable;\r\n\r\n/**\r\n * @method makeCollapsible\r\n * @description Allows an element to be collapsed/expanded\r\n * @param {Element} domEl: Element to be treated as collapsible\r\n * @param {Element} content: Content to display/hide on collapse/extend\r\n * @param {Element} parent: Element where the content will be appended (default is domEl.parent)\r\n * @param {Object} options\r\n */\r\nfunction makeCollapsible( domEl: any, content: any, parent: any, options: any = {} )\r\n{\r\n domEl.classList.add( 'collapsible' );\r\n\r\n const collapsed = options.collapsed ?? true;\r\n const actionIcon: HTMLElement = LX.makeIcon( 'Right' );\r\n actionIcon.classList.add( 'collapser' );\r\n if ( collapsed ) actionIcon.dataset['collapsed'] = `${collapsed}`;\r\n actionIcon.style.marginLeft = 'auto';\r\n actionIcon.style.marginRight = '0.2rem';\r\n\r\n actionIcon.addEventListener( 'click', function( e: any )\r\n {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if ( this.dataset['collapsed'] )\r\n {\r\n delete this.dataset['collapsed'];\r\n content.style.display = options.display ?? 'block';\r\n }\r\n else\r\n {\r\n this.dataset['collapsed'] = 'true';\r\n content.style.display = 'none';\r\n }\r\n } );\r\n\r\n domEl.appendChild( actionIcon );\r\n\r\n parent = parent ?? domEl.parentElement;\r\n\r\n parent.appendChild( content );\r\n}\r\n\r\nLX.makeCollapsible = makeCollapsible;\r\n\r\n/**\r\n * @method makeCodeSnippet\r\n * @description Create a code snippet in a specific language\r\n * @param {String} code\r\n * @param {Array} size\r\n * @param {Object} options\r\n * language (String):\r\n * windowMode (Boolean):\r\n * lineNumbers (Boolean):\r\n * firstLine (Number): TODO\r\n * linesAdded (Array):\r\n * linesRemoved (Array):\r\n * tabName (String):\r\n * className (String): Extra class to customize snippet\r\n */\r\nfunction makeCodeSnippet( code: string, size: any[], options: any = {} )\r\n{\r\n if ( !LX.has( 'CodeEditor' ) )\r\n {\r\n console.error( 'Import the CodeEditor component to create snippets!' );\r\n return;\r\n }\r\n\r\n const snippet = document.createElement( 'div' );\r\n snippet.className = 'lexcodesnippet ' + ( options.className ?? '' );\r\n snippet.style.width = size ? size[0] : 'auto';\r\n snippet.style.height = size ? size[1] : 'auto';\r\n const area = new Area( { xskipAppend: true } );\r\n let editor = new LX.CodeEditor( area, {\r\n skipInfo: true,\r\n disableEdition: true,\r\n allowAddScripts: false,\r\n name: options.tabName,\r\n callback: ( instance: typeof LX.CodeEditor ) => {\r\n instance.setText( code, options.language ?? 'Plain Text' );\r\n\r\n if ( options.linesAdded )\r\n {\r\n const code = instance.root.querySelector( '.code' );\r\n for ( let ls of options.linesAdded )\r\n {\r\n const l: number | number[] = ls;\r\n if ( l.constructor == Number )\r\n {\r\n code.childNodes[l - 1].classList.add( 'added' );\r\n }\r\n else if ( l.constructor == Array )\r\n { // It's a range\r\n for ( let i = l[0] - 1; i <= ( l[1] - 1 ); i++ )\r\n {\r\n code.childNodes[i].classList.add( 'added' );\r\n }\r\n }\r\n }\r\n }\r\n\r\n if ( options.linesRemoved )\r\n {\r\n const code = instance.root.querySelector( '.code' );\r\n for ( let ls of options.linesRemoved )\r\n {\r\n const l: number | number[] = ls;\r\n if ( l.constructor == Number )\r\n {\r\n code.childNodes[l - 1].classList.add( 'removed' );\r\n }\r\n else if ( l.constructor == Array )\r\n { // It's a range\r\n for ( let i = l[0] - 1; i <= ( l[1] - 1 ); i++ )\r\n {\r\n code.childNodes[i].classList.add( 'removed' );\r\n }\r\n }\r\n }\r\n }\r\n\r\n if ( options.windowMode )\r\n {\r\n const windowActionButtons = document.createElement( 'div' );\r\n windowActionButtons.className = 'lexwindowbuttons';\r\n const aButton = document.createElement( 'span' );\r\n aButton.style.background = '#ee4f50';\r\n const bButton = document.createElement( 'span' );\r\n bButton.style.background = '#f5b720';\r\n const cButton = document.createElement( 'span' );\r\n cButton.style.background = '#53ca29';\r\n windowActionButtons.appendChild( aButton );\r\n windowActionButtons.appendChild( bButton );\r\n windowActionButtons.appendChild( cButton );\r\n const tabs = instance.root.querySelector( '.lexareatabs' );\r\n tabs.prepend( windowActionButtons );\r\n }\r\n\r\n if ( !( options.lineNumbers ?? true ) )\r\n {\r\n instance.root.classList.add( 'no-gutter' );\r\n }\r\n }\r\n } );\r\n\r\n snippet.appendChild( area.root );\r\n\r\n return snippet;\r\n}\r\n\r\nLX.makeCodeSnippet = makeCodeSnippet;\r\n\r\n/**\r\n * @method makeKbd\r\n * @description Kbd element to display a keyboard key.\r\n * @param {Array} keys\r\n * @param {String} extraClass\r\n */\r\nfunction makeKbd( keys: string[], useSpecialKeys: boolean = true, extraClass: string = '' )\r\n{\r\n const specialKeys: Record<string, string> = {\r\n 'Ctrl': '⌃',\r\n 'Enter': '↩',\r\n 'Shift': '⇧',\r\n 'CapsLock': '⇪',\r\n 'Meta': '⌘',\r\n 'Option': '⌥',\r\n 'Alt': '⌥',\r\n 'Tab': '⇥',\r\n 'ArrowUp': '↑',\r\n 'ArrowDown': '↓',\r\n 'ArrowLeft': '←',\r\n 'ArrowRight': '→',\r\n 'Space': '␣'\r\n };\r\n\r\n const kbd = LX.makeContainer( [ 'auto', 'auto' ], 'flex flex-row ml-auto' );\r\n\r\n for ( const k of keys )\r\n {\r\n LX.makeContainer( [ 'auto', 'auto' ], 'self-center text-xs fg-secondary select-none ' + extraClass,\r\n useSpecialKeys ? specialKeys[k] ?? k : k, kbd );\r\n }\r\n\r\n return kbd;\r\n}\r\n\r\nLX.makeKbd = makeKbd;\r\n\r\n/**\r\n * @method makeBreadcrumb\r\n * @description Displays the path to the current resource using a hierarchy\r\n * @param {Array} items\r\n * @param {Object} options\r\n * maxItems: Max items until ellipsis is used to overflow\r\n * separatorIcon: Customize separator icon\r\n */\r\nfunction makeBreadcrumb( items: any[], options: any = {} )\r\n{\r\n const breadcrumb = LX.makeContainer( [ 'auto', 'auto' ], 'flex flex-row gap-1' );\r\n\r\n const separatorIcon = options.separatorIcon ?? 'ChevronRight';\r\n const maxItems = options.maxItems ?? 4;\r\n const eraseNum = items.length - maxItems;\r\n if ( eraseNum > 0 )\r\n {\r\n const erased = items.splice( 1, eraseNum + 1 );\r\n const ellipsisItem = { title: '...', ellipsis: erased.map( ( v ) => v.title ).join( '/' ) };\r\n items.splice( 1, 0, ellipsisItem );\r\n }\r\n\r\n for ( let i = 0; i < items.length; ++i )\r\n {\r\n const item = items[i];\r\n console.assert( item.title, 'Breadcrumb item must have a title!' );\r\n\r\n if ( i != 0 )\r\n {\r\n const icon = LX.makeIcon( separatorIcon, { svgClass: 'sm fg-secondary separator' } );\r\n breadcrumb.appendChild( icon );\r\n }\r\n\r\n const lastElement = i == items.length - 1;\r\n const breadcrumbItem = LX.makeContainer( [ 'auto', 'auto' ],\r\n `p-1 flex flex-row gap-1 items-center ${lastElement ? '' : 'fg-secondary'}` );\r\n breadcrumb.appendChild( breadcrumbItem );\r\n\r\n let itemTitle = LX.makeElement( 'p', '', item.title );\r\n if ( item.icon )\r\n {\r\n breadcrumbItem.appendChild( LX.makeIcon( item.icon, { svgClass: 'sm' } ) );\r\n }\r\n\r\n if ( item.items !== undefined )\r\n {\r\n const bDropdownTrigger = LX.makeContainer( [ 'auto', 'auto' ], `${lastElement ? '' : 'fg-secondary'}` );\r\n LX.listen( bDropdownTrigger, 'click', ( e: any ) => {\r\n LX.addDropdownMenu( e.target, item.items, { side: 'bottom', align: 'start' } );\r\n } );\r\n bDropdownTrigger.append( itemTitle );\r\n breadcrumbItem.appendChild( bDropdownTrigger );\r\n }\r\n else if ( item.url !== undefined )\r\n {\r\n let itemUrl = LX.makeElement( 'a', `decoration-none fg-${lastElement ? 'primary' : 'secondary'}`, '',\r\n breadcrumbItem );\r\n itemUrl.href = item.url;\r\n itemUrl.appendChild( itemTitle );\r\n }\r\n else\r\n {\r\n breadcrumbItem.appendChild( itemTitle );\r\n }\r\n\r\n if ( item.ellipsis )\r\n {\r\n LX.asTooltip( breadcrumbItem, item.ellipsis, { side: 'bottom', offset: 4 } );\r\n }\r\n }\r\n\r\n return breadcrumb;\r\n}\r\n\r\nLX.makeBreadcrumb = makeBreadcrumb;\r\n\r\n/**\r\n * @method makeIcon\r\n * @description Gets an SVG element using one of LX.ICONS\r\n * @param {String} iconName\r\n * @param {Object} options\r\n * title\r\n * extraClass\r\n * svgClass\r\n * variant\r\n * ...Any Lucide icon options\r\n */\r\nfunction makeIcon( iconName: string, options: any = {} )\r\n{\r\n let svg: any = null;\r\n\r\n const _createIconFromSVG = ( svg: any ) => {\r\n if ( options.svgClass && options.svgClass.length )\r\n {\r\n options.svgClass.split( ' ' ).forEach( ( c: string ) => svg.classList.add( c ) );\r\n }\r\n const icon = document.createElement( 'a' );\r\n icon.title = options.title ?? '';\r\n icon.className = 'lexicon ' + ( options.iconClass ?? '' );\r\n icon.appendChild( svg );\r\n svg.dataset['name'] = iconName;\r\n return icon;\r\n };\r\n\r\n if ( iconName.includes( '@' ) )\r\n {\r\n const parts = iconName.split( '@' );\r\n iconName = parts[0];\r\n options.variant = parts[1];\r\n }\r\n\r\n let data: any = LX.ICONS[iconName];\r\n const lucide = ( window as any ).lucide;\r\n const lucideData = lucide[iconName] ?? lucide[LX.LucideIconAlias[iconName]];\r\n\r\n if ( data )\r\n {\r\n // Resolve alias\r\n if ( data.constructor != Array )\r\n {\r\n data = LX.ICONS[data];\r\n }\r\n\r\n // Resolve variant\r\n const requestedVariant = options.variant ?? 'regular';\r\n data = ( ( requestedVariant == 'solid' ) ? LX.ICONS[`${iconName}@solid`] : data ) ?? data;\r\n const variant = data[3];\r\n\r\n // Create internal icon if variant is the same as requested, there's no lucide/fallback data or if variant is \"regular\" (default)\r\n if ( ( requestedVariant == variant ) || !lucideData || variant == 'regular' )\r\n {\r\n svg = document.createElementNS( 'http://www.w3.org/2000/svg', 'svg' );\r\n svg.setAttribute( 'viewBox', `0 0 ${data[0]} ${data[1]}` );\r\n\r\n if ( data[5] )\r\n {\r\n const classes = data[5].svgClass;\r\n classes?.split( ' ' ).forEach( ( c: string ) => {\r\n svg.classList.add( c );\r\n } );\r\n\r\n const attrs = data[5].svgAttributes;\r\n attrs?.split( ' ' ).forEach( ( attr: string ) => {\r\n const t = attr.split( '=' );\r\n svg.setAttribute( t[0], t[1] );\r\n } );\r\n }\r\n\r\n const path = document.createElement( 'path' );\r\n path.setAttribute( 'fill', 'currentColor' );\r\n path.setAttribute( 'd', data[4] );\r\n svg.appendChild( path );\r\n\r\n if ( data[5] )\r\n {\r\n const classes = data[5].pathClass;\r\n classes?.split( ' ' ).forEach( ( c: string ) => {\r\n path.classList.add( c );\r\n } );\r\n\r\n const attrs = data[5].pathAttributes;\r\n attrs?.split( ' ' ).forEach( ( attr: string ) => {\r\n const t = attr.split( '=' );\r\n path.setAttribute( t[0], t[1] );\r\n } );\r\n }\r\n\r\n const faLicense =\r\n `<!-- This icon might belong to a collection from Iconify - https://iconify.design/ - or !Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc. -->`;\r\n svg.innerHTML += faLicense;\r\n return _createIconFromSVG( svg );\r\n }\r\n }\r\n\r\n // Fallback to Lucide icon\r\n console.assert( lucideData, `No existing icon named _${iconName}_` );\r\n svg = lucide.createElement( lucideData, options );\r\n\r\n return _createIconFromSVG( svg );\r\n}\r\n\r\nLX.makeIcon = makeIcon;\r\n\r\n/**\r\n * @method registerIcon\r\n * @description Register an SVG icon to LX.ICONS\r\n * @param {String} iconName\r\n * @param {String} svgString\r\n * @param {String} variant\r\n * @param {Array} aliases\r\n */\r\nfunction registerIcon( iconName: string, svgString: string, variant: string = 'none', aliases: string[] = [] )\r\n{\r\n const svg: any = new DOMParser().parseFromString( svgString, 'image/svg+xml' ).documentElement;\r\n const path = svg.querySelector( 'path' );\r\n const viewBox = svg.getAttribute( 'viewBox' ).split( ' ' );\r\n const pathData = path.getAttribute( 'd' );\r\n\r\n let svgAttributes = [];\r\n let pathAttributes = [];\r\n\r\n for ( const attr of svg.attributes )\r\n {\r\n switch ( attr.name )\r\n {\r\n case 'transform':\r\n case 'fill':\r\n case 'stroke-width':\r\n case 'stroke-linecap':\r\n case 'stroke-linejoin':\r\n svgAttributes.push( `${attr.name}=${attr.value}` );\r\n break;\r\n }\r\n }\r\n\r\n for ( const attr of path.attributes )\r\n {\r\n switch ( attr.name )\r\n {\r\n case 'transform':\r\n case 'fill':\r\n case 'stroke-width':\r\n case 'stroke-linecap':\r\n case 'stroke-linejoin':\r\n pathAttributes.push( `${attr.name}=${attr.value}` );\r\n break;\r\n }\r\n }\r\n\r\n const iconData = [\r\n parseInt( viewBox[2] ),\r\n parseInt( viewBox[3] ),\r\n aliases,\r\n variant,\r\n pathData,\r\n {\r\n svgAttributes: svgAttributes.length ? svgAttributes.join( ' ' ) : null,\r\n pathAttributes: pathAttributes.length ? pathAttributes.join( ' ' ) : null\r\n }\r\n ];\r\n\r\n if ( LX.ICONS[iconName] )\r\n {\r\n console.warn( `${iconName} will be added/replaced in LX.ICONS` );\r\n }\r\n\r\n LX.ICONS[iconName] = iconData;\r\n}\r\n\r\nLX.registerIcon = registerIcon;\r\n\r\n/**\r\n * @method registerCommandbarEntry\r\n * @description Adds an extra command bar entry\r\n * @param {String} name\r\n * @param {Function} callback\r\n */\r\nfunction registerCommandbarEntry( name: string, callback: any )\r\n{\r\n LX.extraCommandbarEntries.push( { name, callback } );\r\n}\r\n\r\nLX.registerCommandbarEntry = registerCommandbarEntry;\r\n\r\n/*\r\n Dialog and Notification Elements\r\n*/\r\n\r\n/**\r\n * @method message\r\n * @param {String} text\r\n * @param {String} title (Optional)\r\n * @param {Object} options\r\n * id: Id of the message dialog\r\n * position: Dialog position in screen [screen centered]\r\n * draggable: Dialog can be dragged [false]\r\n */\r\n\r\nfunction message( text: string, title: string, options: any = {} )\r\n{\r\n if ( !text )\r\n {\r\n throw ( 'No message to show' );\r\n }\r\n\r\n options.modal = true;\r\n\r\n return new LX.Dialog( title, ( p: Panel ) => {\r\n p.addTextArea( null, text, null, { disabled: true, fitHeight: true } );\r\n }, options );\r\n}\r\n\r\nLX.message = message;\r\n\r\n/**\r\n * @method popup\r\n * @param {String} text\r\n * @param {String} title (Optional)\r\n * @param {Object} options\r\n * id: Id of the message dialog\r\n * timeout (Number): Delay time before it closes automatically (ms). Default: [3000]\r\n * position (Array): [x,y] Dialog position in screen. Default: [screen centered]\r\n * size (Array): [width, height]\r\n */\r\n\r\nfunction popup( text: string, title: string, options: any = {} )\r\n{\r\n if ( !text )\r\n {\r\n throw ( 'No message to show' );\r\n }\r\n\r\n options.size = options.size ?? [ 'max-content', 'auto' ];\r\n options.class = 'lexpopup';\r\n\r\n const time = options.timeout || 3000;\r\n const dialog = new LX.Dialog( title, ( p: Panel ) => {\r\n p.addTextArea( null, text, null, { disabled: true, fitHeight: true } );\r\n }, options );\r\n\r\n setTimeout( () => {\r\n dialog.close();\r\n }, Math.max( time, 150 ) );\r\n\r\n return dialog;\r\n}\r\n\r\nLX.popup = popup;\r\n\r\n/**\r\n * @method prompt\r\n * @param {String} text\r\n * @param {String} title (Optional)\r\n * @param {Object} options\r\n * id: Id of the prompt dialog\r\n * position: Dialog position in screen [screen centered]\r\n * draggable: Dialog can be dragged [false]\r\n * input: If false, no text input appears\r\n * accept: Accept text\r\n * required: Input has to be filled [true]. Default: false\r\n */\r\n\r\nfunction prompt( text: string, title: string, callback: ( value: any ) => void, options: any = {} )\r\n{\r\n options.modal = true;\r\n options.className = 'prompt';\r\n\r\n let value = '';\r\n\r\n const dialog = new LX.Dialog( title, ( p: Panel ) => {\r\n p.addTextArea( null, text, null, { disabled: true, fitHeight: true } );\r\n\r\n if ( options.input ?? true )\r\n {\r\n p.addText( null, options.input || value, ( v: string ) => value = v, { placeholder: '...' } );\r\n }\r\n\r\n p.sameLine( 2 );\r\n\r\n p.addButton( null, 'Cancel', () => {\r\n if ( options.on_cancel ) options.on_cancel();\r\n dialog.close();\r\n } );\r\n\r\n p.addButton( null, options.accept || 'Continue', () => {\r\n if ( options.required && value === '' )\r\n {\r\n text += text.includes( 'You must fill the input text.' ) ? '' : '\\nYou must fill the input text.';\r\n dialog.close();\r\n prompt( text, title, callback, options );\r\n }\r\n else\r\n {\r\n if ( callback ) callback.call( LX, value );\r\n dialog.close();\r\n }\r\n }, { buttonClass: 'primary' } );\r\n }, options );\r\n\r\n // Focus text prompt\r\n if ( options.input ?? true )\r\n {\r\n dialog.root.querySelector( 'input' ).focus();\r\n }\r\n\r\n return dialog;\r\n}\r\n\r\nLX.prompt = prompt;\r\n\r\n/**\r\n * @method toast\r\n * @param {String} title\r\n * @param {String} description (Optional)\r\n * @param {Object} options\r\n * position: Set new position for the toasts (\"top-left\" | \"top-center\" | \"top-right\" | \"bottom-left\" | \"bottom-center\" | \"bottom-right\")\r\n * action: Data of the custom action { name, callback }\r\n * closable: Allow closing the toast\r\n * timeout: Time in which the toast closed automatically, in ms. -1 means persistent. [3000]\r\n */\r\n\r\nfunction toast( title: string, description: string, options: any = {} )\r\n{\r\n if ( !title )\r\n {\r\n throw ( 'The toast needs at least a title!' );\r\n }\r\n\r\n const nots = LX.notifications;\r\n console.assert( nots );\r\n\r\n const toast: any = document.createElement( 'li' );\r\n toast.className = 'lextoast';\r\n nots.prepend( toast );\r\n\r\n const [ positionVertical, positionHorizontal ] = options.position\r\n ? options.position.split( '-' )\r\n : [ 'bottom', 'right' ];\r\n\r\n // Reset style\r\n nots.style.right = 'unset';\r\n nots.style.left = 'unset';\r\n nots.style.top = 'unset';\r\n nots.style.bottom = 'unset';\r\n nots.style.placeSelf = 'unset';\r\n\r\n switch ( positionVertical )\r\n {\r\n case 'top':\r\n toast.style.translate = '0 -30px';\r\n nots.style.top = '1rem';\r\n nots.style.flexDirection = 'column';\r\n break;\r\n case 'bottom':\r\n toast.style.translate = '0 calc(100% + 30px)';\r\n nots.style.top = 'auto';\r\n nots.style.bottom = '1rem';\r\n nots.style.flexDirection = 'column-reverse';\r\n break;\r\n }\r\n\r\n switch ( positionHorizontal )\r\n {\r\n case 'left':\r\n nots.style.left = '1rem';\r\n break;\r\n case 'center':\r\n nots.style.placeSelf = 'center';\r\n break;\r\n case 'right':\r\n nots.style.right = '1rem';\r\n break;\r\n }\r\n\r\n toast.classList.add( positionVertical );\r\n toast.classList.add( positionHorizontal );\r\n\r\n LX.doAsync( () => {\r\n if ( nots.offsetWidth > nots.iWidth )\r\n {\r\n nots.iWidth = Math.min( nots.offsetWidth, 480 );\r\n nots.style.width = nots.iWidth + 'px';\r\n }\r\n\r\n toast.dataset['open'] = true;\r\n }, 10 );\r\n\r\n const content = document.createElement( 'div' );\r\n content.className = 'lextoastcontent';\r\n toast.appendChild( content );\r\n\r\n const titleContent = document.createElement( 'div' );\r\n titleContent.className = 'title';\r\n titleContent.innerHTML = title;\r\n content.appendChild( titleContent );\r\n\r\n if ( description )\r\n {\r\n const desc = document.createElement( 'div' );\r\n desc.className = 'desc';\r\n desc.innerHTML = description;\r\n content.appendChild( desc );\r\n }\r\n\r\n if ( options.action )\r\n {\r\n const panel = new Panel();\r\n panel.addButton( null, options.action.name ?? 'Accept', options.action.callback.bind( LX, toast ), {\r\n width: 'auto',\r\n maxWidth: '150px',\r\n className: 'right',\r\n buttonClass: 'border'\r\n } );\r\n toast.appendChild( panel.root.childNodes[0] );\r\n }\r\n\r\n toast.close = function()\r\n {\r\n this.dataset['open'] = 'false';\r\n LX.doAsync( () => {\r\n this.remove();\r\n if ( !LX.notifications.childElementCount )\r\n {\r\n LX.notifications.style.width = 'unset';\r\n LX.notifications.iWidth = 0;\r\n }\r\n }, 500 );\r\n };\r\n\r\n if ( options.closable ?? true )\r\n {\r\n const closeIcon = LX.makeIcon( 'X', { iconClass: 'closer' } );\r\n closeIcon.addEventListener( 'click', () => {\r\n toast.close();\r\n } );\r\n toast.appendChild( closeIcon );\r\n }\r\n\r\n const timeout = options.timeout ?? 3000;\r\n\r\n if ( timeout != -1 )\r\n {\r\n LX.doAsync( () => {\r\n toast.close();\r\n }, timeout );\r\n }\r\n}\r\n\r\nLX.toast = toast;\r\n\r\n/**\r\n * @method badge\r\n * @param {String} text\r\n * @param {String} className\r\n * @param {Object} options\r\n * style: Style attributes to override\r\n * asElement: Returns the badge as HTMLElement [false]\r\n */\r\n\r\nfunction badge( text: string, className: string, options: any = {} )\r\n{\r\n const container = document.createElement( 'div' );\r\n container.innerHTML = text;\r\n container.className = 'lexbadge ' + ( className ?? '' );\r\n\r\n if ( options.chip )\r\n {\r\n container.classList.add( 'chip' );\r\n }\r\n\r\n Object.assign( container.style, options.style ?? {} );\r\n\r\n if ( options.callback )\r\n {\r\n const arrowIcon = LX.makeIcon( 'ArrowUpRight', { svgClass: 'xs fg-contrast' } );\r\n arrowIcon.querySelector( 'svg' ).style.marginLeft = '-0.25rem';\r\n container.innerHTML += arrowIcon.innerHTML;\r\n container.addEventListener( 'click', ( e ) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n options.callback();\r\n } );\r\n }\r\n\r\n if ( options.parent )\r\n {\r\n options.parent.classList.add( 'lexbadge-parent' );\r\n options.parent.appendChild( container );\r\n }\r\n\r\n return ( options.asElement ?? false ) ? container : container.outerHTML;\r\n}\r\n\r\nLX.badge = badge;\r\n\r\n/**\r\n * @method makeElement\r\n * @param {String} htmlType\r\n * @param {String} className\r\n * @param {String} innerHTML\r\n * @param {HTMLElement} parent\r\n * @param {Object} overrideStyle\r\n */\r\n\r\nfunction makeElement( htmlType: string, className: string, innerHTML: string, parent: any, overrideStyle = {} )\r\n{\r\n const element = document.createElement( htmlType );\r\n element.className = className ?? '';\r\n element.innerHTML = innerHTML ?? '';\r\n Object.assign( element.style, overrideStyle );\r\n\r\n if ( parent )\r\n {\r\n if ( parent.attach )\r\n { // Use attach method if possible\r\n parent.attach( element );\r\n }\r\n // its a native HTMLElement\r\n else\r\n {\r\n parent.appendChild( element );\r\n }\r\n }\r\n\r\n return element;\r\n}\r\n\r\nLX.makeElement = makeElement;\r\n\r\n/**\r\n * @method makeContainer\r\n * @param {Array} size\r\n * @param {String} className\r\n * @param {String} innerHTML\r\n * @param {HTMLElement} parent\r\n * @param {Object} overrideStyle\r\n */\r\n\r\nfunction makeContainer( size: any[], className: string, innerHTML: string, parent: any, overrideStyle = {} )\r\n{\r\n const container = LX.makeElement( 'div', 'lexcontainer ' + ( className ?? '' ), innerHTML, parent, overrideStyle );\r\n container.style.width = size && size[0] ? size[0] : '100%';\r\n container.style.height = size && size[1] ? size[1] : '100%';\r\n return container;\r\n}\r\n\r\nLX.makeContainer = makeContainer;\r\n\r\n/**\r\n * @method asTooltip\r\n * @param {HTMLElement} trigger\r\n * @param {String} content\r\n * @param {Object} options\r\n * side: Side of the tooltip\r\n * offset: Tooltip margin offset\r\n * offsetX: Tooltip margin horizontal offset\r\n * offsetY: Tooltip margin vertical offset\r\n * active: Tooltip active by default [true]\r\n * callback: Callback function to execute when the tooltip is shown\r\n */\r\n\r\nfunction asTooltip( trigger: any, content: any, options: any = {} )\r\n{\r\n console.assert( trigger, 'You need a trigger to generate a tooltip!' );\r\n\r\n trigger.dataset['disableTooltip'] = !( options.active ?? true );\r\n\r\n let tooltipDom: any = null;\r\n\r\n const _offset = options.offset;\r\n const _offsetX = options.offsetX ?? ( _offset ?? 0 );\r\n const _offsetY = options.offsetY ?? ( _offset ?? 6 );\r\n\r\n trigger.addEventListener( 'mouseenter', function( e: any )\r\n {\r\n if ( trigger.dataset['disableTooltip'] == 'true' )\r\n {\r\n return;\r\n }\r\n\r\n tooltipDom = document.createElement( 'div' );\r\n tooltipDom.className = 'lextooltip';\r\n tooltipDom.innerHTML = trigger.dataset['tooltipContent'] ?? content;\r\n\r\n const nestedDialog = trigger.closest( 'dialog' );\r\n const tooltipParent = nestedDialog ?? LX.root;\r\n\r\n // Remove other first\r\n LX.root.querySelectorAll( '.lextooltip' ).forEach( ( e: HTMLElement ) => e.remove() );\r\n\r\n // Append new tooltip\r\n tooltipParent.appendChild( tooltipDom );\r\n\r\n LX.doAsync( () => {\r\n const position = [ 0, 0 ];\r\n const offsetX = parseFloat( trigger.dataset['tooltipOffsetX'] ?? _offsetX );\r\n const offsetY = parseFloat( trigger.dataset['tooltipOffsetY'] ?? _offsetY );\r\n const rect = trigger.getBoundingClientRect();\r\n let alignWidth = true;\r\n\r\n switch ( options.side ?? 'top' )\r\n {\r\n case 'left':\r\n position[0] += rect.x - tooltipDom.offsetWidth - offsetX;\r\n alignWidth = false;\r\n break;\r\n case 'right':\r\n position[0] += rect.x + rect.width + offsetX;\r\n alignWidth = false;\r\n break;\r\n case 'top':\r\n position[1] += rect.y - tooltipDom.offsetHeight - offsetY;\r\n alignWidth = true;\r\n break;\r\n case 'bottom':\r\n position[1] += rect.y + rect.height + offsetY;\r\n alignWidth = true;\r\n break;\r\n }\r\n\r\n if ( alignWidth ) position[0] += ( rect.x + rect.width * 0.5 ) - tooltipDom.offsetWidth * 0.5 + offsetX;\r\n else position[1] += ( rect.y + rect.height * 0.5 ) - tooltipDom.offsetHeight * 0.5 + offsetY;\r\n\r\n // Avoid collisions\r\n position[0] = LX.clamp( position[0], 0, window.innerWidth - tooltipDom.offsetWidth - 4 );\r\n position[1] = LX.clamp( position[1], 0, window.innerHeight - tooltipDom.offsetHeight - 4 );\r\n\r\n if ( nestedDialog )\r\n {\r\n let parentRect = tooltipParent.getBoundingClientRect();\r\n position[0] -= parentRect.x;\r\n position[1] -= parentRect.y;\r\n }\r\n\r\n tooltipDom.style.left = `${position[0]}px`;\r\n tooltipDom.style.top = `${position[1]}px`;\r\n\r\n if ( options.callback )\r\n {\r\n options.callback( tooltipDom, trigger );\r\n }\r\n } );\r\n } );\r\n\r\n trigger.addEventListener( 'mouseleave', function( e: any )\r\n {\r\n if ( tooltipDom )\r\n {\r\n tooltipDom.remove();\r\n }\r\n } );\r\n}\r\n\r\nLX.asTooltip = asTooltip;\r\n\r\nfunction insertChildAtIndex( parent: HTMLElement, child: HTMLElement, index: number = Infinity )\r\n{\r\n if ( index >= parent.children.length ) parent.appendChild( child );\r\n else parent.insertBefore( child, parent.children[index] );\r\n}\r\n\r\nLX.insertChildAtIndex = insertChildAtIndex;\r\n\r\n// Since we use \"box-sizing: border-box\" now,\r\n// it's all included in offsetWidth/offsetHeight\r\nfunction getComputedSize( el: HTMLElement )\r\n{\r\n return {\r\n width: el.offsetWidth,\r\n height: el.offsetHeight\r\n };\r\n}\r\n\r\nLX.getComputedSize = getComputedSize;\r\n\r\nfunction listen( el: any, eventName: string, callback: any, callbackName?: string )\r\n{\r\n callbackName = callbackName ?? ( '_on' + eventName );\r\n el[callbackName] = callback;\r\n el.addEventListener( eventName, callback );\r\n}\r\n\r\nLX.listen = listen;\r\n\r\nfunction ignore( el: any, eventName: string, callbackName?: string )\r\n{\r\n callbackName = callbackName ?? ( '_on' + eventName );\r\n const callback = el[callbackName];\r\n el.removeEventListener( eventName, callback );\r\n}\r\n\r\nLX.ignore = ignore;\r\n\r\nfunction getParentArea( el: any )\r\n{\r\n let parent = el.parentElement;\r\n while ( parent )\r\n {\r\n if ( parent.classList.contains( 'lexarea' ) ) return parent;\r\n parent = parent.parentElement;\r\n }\r\n}\r\n\r\nLX.getParentArea = getParentArea;\r\n\r\nfunction hasClass( el: any, list: string | string[] )\r\n{\r\n list = ( [] as string[] ).concat( list );\r\n var r = list.filter( ( v ) => el.classList.contains( v ) );\r\n return !!r.length;\r\n}\r\n\r\nLX.hasClass = hasClass;\r\n\r\nfunction addClass( el: any, className: string )\r\n{\r\n if ( className ) el.classList.add( className );\r\n}\r\n\r\nLX.addClass = addClass;\r\n\r\nfunction removeClass( el: any, className: string )\r\n{\r\n if ( className ) el.classList.remove( className );\r\n}\r\n\r\nLX.removeClass = removeClass;\r\n\r\nfunction toggleClass( el: any, className: string, force?: boolean )\r\n{\r\n if ( className ) el.classList.toggle( className, force );\r\n}\r\n\r\nLX.toggleClass = toggleClass;\r\n\r\nfunction lastChar( str: string )\r\n{\r\n return str[str.length - 1];\r\n}\r\n\r\nLX.lastChar = lastChar;\r\n\r\n/*\r\n * Requests\r\n */\r\n\r\nObject.assign( LX, {\r\n /**\r\n * Request file from url (it could be a binary, text, etc.). If you want a simplied version use\r\n * @method request\r\n * @param {Object} request object with all the parameters like data (for sending forms), dataType, success, error\r\n * @param {Function} on_complete\r\n */\r\n request( request: any )\r\n {\r\n var dataType = request.dataType || 'text';\r\n if ( dataType == 'json' )\r\n { // parse it locally\r\n dataType = 'text';\r\n }\r\n else if ( dataType == 'xml' )\r\n { // parse it locally\r\n dataType = 'text';\r\n }\r\n else if ( dataType == 'binary' )\r\n {\r\n // request.mimeType = \"text/plain; charset=x-user-defined\";\r\n dataType = 'arraybuffer';\r\n request.mimeType = 'application/octet-stream';\r\n }\r\n\r\n // regular case, use AJAX call\r\n var xhr = new XMLHttpRequest();\r\n xhr.open( request.data ? 'POST' : 'GET', request.url, true );\r\n if ( dataType )\r\n {\r\n xhr.responseType = dataType;\r\n }\r\n if ( request.mimeType )\r\n {\r\n xhr.overrideMimeType( request.mimeType );\r\n }\r\n if ( request.nocache )\r\n {\r\n xhr.setRequestHeader( 'Cache-Control', 'no-cache' );\r\n }\r\n\r\n xhr.onload = function( load )\r\n {\r\n var response = this.response;\r\n if ( this.status != 200 )\r\n {\r\n var err = 'Error ' + this.status;\r\n if ( request.error )\r\n {\r\n request.error( err );\r\n }\r\n return;\r\n }\r\n\r\n if ( request.dataType == 'json' )\r\n { // chrome doesnt support json format\r\n try\r\n {\r\n response = JSON.parse( response );\r\n }\r\n catch ( err )\r\n {\r\n if ( request.error )\r\n {\r\n request.error( err );\r\n }\r\n else\r\n {\r\n throw err;\r\n }\r\n }\r\n }\r\n else if ( request.dataType == 'xml' )\r\n {\r\n try\r\n {\r\n var xmlparser = new DOMParser();\r\n response = xmlparser.parseFromString( response, 'text/xml' );\r\n }\r\n catch ( err )\r\n {\r\n if ( request.error )\r\n {\r\n request.error( err );\r\n }\r\n else\r\n {\r\n throw err;\r\n }\r\n }\r\n }\r\n if ( request.success )\r\n {\r\n request.success.call( this, response, this );\r\n }\r\n };\r\n xhr.onerror = function( err )\r\n {\r\n if ( request.error )\r\n {\r\n request.error( err );\r\n }\r\n };\r\n\r\n var data = new FormData();\r\n if ( request.data )\r\n {\r\n for ( var i in request.data )\r\n {\r\n data.append( i, request.data[i] );\r\n }\r\n }\r\n\r\n xhr.send( data );\r\n return xhr;\r\n },\r\n\r\n /**\r\n * Request file from url\r\n * @method requestText\r\n * @param {String} url\r\n * @param {Function} onComplete\r\n * @param {Function} onError\r\n */\r\n requestText( url: string, onComplete: ( r: Response, rq: XMLHttpRequest ) => void,\r\n onError: ( e: ProgressEvent ) => void )\r\n {\r\n return this.request( { url: url, dataType: 'text', success: onComplete, error: onError } );\r\n },\r\n\r\n /**\r\n * Request file from url\r\n * @method requestJSON\r\n * @param {String} url\r\n * @param {Function} onComplete\r\n * @param {Function} onError\r\n */\r\n requestJSON( url: string, onComplete: ( r: Response, rq: XMLHttpRequest ) => void,\r\n onError: ( e: ProgressEvent ) => void )\r\n {\r\n return this.request( { url: url, dataType: 'json', success: onComplete, error: onError } );\r\n },\r\n\r\n /**\r\n * Request binary file from url\r\n * @method requestBinary\r\n * @param {String} url\r\n * @param {Function} onComplete\r\n * @param {Function} onError\r\n */\r\n requestBinary( url: string, onComplete: ( r: Response, rq: XMLHttpRequest ) => void,\r\n onError: ( e: ProgressEvent ) => void )\r\n {\r\n return this.request( { url: url, dataType: 'binary', success: onComplete, error: onError } );\r\n },\r\n\r\n /**\r\n * Request script and inserts it in the DOM\r\n * @method requireScript\r\n * @param {String|Array} url the url of the script or an array containing several urls\r\n * @param {Function} onComplete\r\n * @param {Function} onError\r\n * @param {Function} onProgress (if several files are required, onProgress is called after every file is added to the DOM)\r\n */\r\n requireScript( url: any, onComplete: ( r: any[] ) => void,\r\n onError: ( e: ProgressEvent, src: string, n: string ) => void, onProgress: ( src: string, n: string ) => void,\r\n version?: string )\r\n {\r\n if ( !url )\r\n {\r\n throw ( 'invalid URL' );\r\n }\r\n\r\n if ( url.constructor === String )\r\n {\r\n url = [ url ];\r\n }\r\n\r\n var total = url.length;\r\n var loaded_scripts: any[] = [];\r\n\r\n for ( var i in url )\r\n {\r\n var script: any = document.createElement( 'script' );\r\n script.num = i;\r\n script.type = 'text/javascript';\r\n script.src = url[i] + ( version ? '?version=' + version : '' );\r\n script.original_src = url[i];\r\n script.async = false;\r\n script.onload = function( e: any )\r\n {\r\n total--;\r\n loaded_scripts.push( this );\r\n if ( total )\r\n {\r\n if ( onProgress )\r\n {\r\n onProgress( this.original_src, this.num );\r\n }\r\n }\r\n else if ( onComplete )\r\n {\r\n onComplete( loaded_scripts );\r\n }\r\n };\r\n if ( onError )\r\n {\r\n script.onerror = function( err: any )\r\n {\r\n onError( err, this.original_src, this.num );\r\n };\r\n }\r\n document.getElementsByTagName( 'head' )[0].appendChild( script );\r\n }\r\n },\r\n\r\n loadScriptSync( url: string )\r\n {\r\n return new Promise( ( resolve, reject ) => {\r\n const script = document.createElement( 'script' );\r\n script.src = url;\r\n script.async = false;\r\n script.onload = () => resolve( 1 );\r\n script.onerror = () => reject( new Error( `Failed to load ${url}` ) );\r\n document.head.appendChild( script );\r\n } );\r\n },\r\n\r\n downloadURL( url: string, filename: string )\r\n {\r\n const fr = new FileReader();\r\n\r\n const _download = function( _url: string )\r\n {\r\n var link = document.createElement( 'a' );\r\n link.href = _url;\r\n link.download = filename;\r\n document.body.appendChild( link );\r\n link.click();\r\n document.body.removeChild( link );\r\n };\r\n\r\n if ( url.includes( 'http' ) )\r\n {\r\n LX.request( { url: url, dataType: 'blob', success: ( f: File ) => {\r\n fr.readAsDataURL( f );\r\n fr.onload = ( e: any ) => {\r\n _download( e.currentTarget.result );\r\n };\r\n } } );\r\n }\r\n else\r\n {\r\n _download( url );\r\n }\r\n },\r\n\r\n downloadFile: function( filename: string, data: any, dataType: string )\r\n {\r\n if ( !data )\r\n {\r\n console.warn( 'No file provided to download' );\r\n return;\r\n }\r\n\r\n if ( !dataType )\r\n {\r\n if ( data.constructor === String )\r\n {\r\n dataType = 'text/plain';\r\n }\r\n else\r\n {\r\n dataType = 'application/octet-stream';\r\n }\r\n }\r\n\r\n var file = null;\r\n if ( data.constructor !== File && data.constructor !== Blob )\r\n {\r\n file = new Blob( [ data ], { type: dataType } );\r\n }\r\n else\r\n {\r\n file = data;\r\n }\r\n\r\n var url = URL.createObjectURL( file );\r\n var element = document.createElement( 'a' );\r\n element.setAttribute( 'href', url );\r\n element.setAttribute( 'download', filename );\r\n element.style.display = 'none';\r\n document.body.appendChild( element );\r\n element.click();\r\n document.body.removeChild( element );\r\n setTimeout( function()\r\n {\r\n URL.revokeObjectURL( url );\r\n }, 1000 * 60 ); // wait one minute to revoke url\r\n }\r\n} );\r\n\r\n/**\r\n * @method formatBytes\r\n * @param {Number} bytes\r\n */\r\nfunction formatBytes( bytes: number )\r\n{\r\n if ( bytes === 0 ) return '0 B';\r\n const k = 1024;\r\n const sizes = [ 'B', 'KB', 'MB', 'GB', 'TB' ];\r\n const i = Math.floor( Math.log( bytes ) / Math.log( k ) );\r\n const value = bytes / Math.pow( k, i );\r\n return value.toFixed( 2 ) + ' ' + sizes[i];\r\n}\r\n\r\nLX.formatBytes = formatBytes;\r\n\r\n/**\r\n * @method compareThreshold\r\n */\r\nfunction compareThreshold( v: number, p: number, n: number, t: number )\r\n{\r\n return Math.abs( v - p ) >= t || Math.abs( v - n ) >= t;\r\n}\r\n\r\nLX.compareThreshold = compareThreshold;\r\n\r\n/**\r\n * @method compareThresholdRange\r\n */\r\nfunction compareThresholdRange( v0: number, v1: number, t0: number, t1: number )\r\n{\r\n return v0 >= t0 && v0 <= t1 || v1 >= t0 && v1 <= t1 || v0 <= t0 && v1 >= t1;\r\n}\r\n\r\nLX.compareThresholdRange = compareThresholdRange;\r\n\r\n/**\r\n * @method getControlPoints\r\n */\r\nfunction getControlPoints( x0: number, y0: number, x1: number, y1: number, x2: number, y2: number, t: number )\r\n{\r\n // x0,y0,x1,y1 are the coordinates of the end (knot) pts of this segment\r\n // x2,y2 is the next knot -- not connected here but needed to calculate p2\r\n // p1 is the control point calculated here, from x1 back toward x0.\r\n // p2 is the next control point, calculated here and returned to become the\r\n // next segment's p1.\r\n // t is the 'tension' which controls how far the control points spread.\r\n\r\n // Scaling factors: distances from this knot to the previous and following knots.\r\n var d01 = Math.sqrt( Math.pow( x1 - x0, 2 ) + Math.pow( y1 - y0, 2 ) );\r\n var d12 = Math.sqrt( Math.pow( x2 - x1, 2 ) + Math.pow( y2 - y1, 2 ) );\r\n\r\n var fa = t * d01 / ( d01 + d12 );\r\n var fb = t - fa;\r\n\r\n var p1x = x1 + fa * ( x0 - x2 );\r\n var p1y = y1 + fa * ( y0 - y2 );\r\n\r\n var p2x = x1 - fb * ( x0 - x2 );\r\n var p2y = y1 - fb * ( y0 - y2 );\r\n\r\n return [ p1x, p1y, p2x, p2y ];\r\n}\r\n\r\nLX.getControlPoints = getControlPoints;\r\n\r\n/**\r\n * @method drawSpline\r\n * @param {CanvasRenderingContext2D} ctx\r\n * @param {Array} pts\r\n * @param {Number} t\r\n */\r\nfunction drawSpline( ctx: CanvasRenderingContext2D, pts: any[], t: number )\r\n{\r\n ctx.save();\r\n var cp: any[] = []; // array of control points, as x0,y0,x1,y1,...\r\n var n = pts.length;\r\n\r\n // Draw an open curve, not connected at the ends\r\n for ( var i = 0; i < ( n - 4 ); i += 2 )\r\n {\r\n cp = cp.concat( LX.getControlPoints( pts[i], pts[i + 1], pts[i + 2], pts[i + 3], pts[i + 4], pts[i + 5], t ) );\r\n }\r\n\r\n for ( var i = 2; i < ( pts.length - 5 ); i += 2 )\r\n {\r\n ctx.beginPath();\r\n ctx.moveTo( pts[i], pts[i + 1] );\r\n ctx.bezierCurveTo( cp[2 * i - 2], cp[2 * i - 1], cp[2 * i], cp[2 * i + 1], pts[i + 2], pts[i + 3] );\r\n ctx.stroke();\r\n ctx.closePath();\r\n }\r\n\r\n // For open curves the first and last arcs are simple quadratics.\r\n ctx.beginPath();\r\n ctx.moveTo( pts[0], pts[1] );\r\n ctx.quadraticCurveTo( cp[0], cp[1], pts[2], pts[3] );\r\n ctx.stroke();\r\n ctx.closePath();\r\n\r\n ctx.beginPath();\r\n ctx.moveTo( pts[n - 2], pts[n - 1] );\r\n ctx.quadraticCurveTo( cp[2 * n - 10], cp[2 * n - 9], pts[n - 4], pts[n - 3] );\r\n ctx.stroke();\r\n ctx.closePath();\r\n\r\n ctx.restore();\r\n}\r\n\r\nLX.drawSpline = drawSpline;\r\n","// Spinner.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\n\r\n/**\r\n * @class Spinner\r\n */\r\n\r\nexport class Spinner\r\n{\r\n root: HTMLElement;\r\n\r\n constructor( options: any = {} )\r\n {\r\n const icon = options.icon ?? 'LoaderCircle';\r\n const size = options.size ?? 'md';\r\n const iconClass = `flex ${options.iconClass ?? ''}`.trim();\r\n const svgClass = `animate-spin ${size} ${options.svgClass ?? ''}`.trim();\r\n\r\n this.root = LX.makeIcon( icon, { iconClass, svgClass } );\r\n }\r\n\r\n html()\r\n {\r\n return this.root.innerHTML;\r\n }\r\n\r\n destroy()\r\n {\r\n this.root.remove();\r\n }\r\n}\r\n\r\nLX.Spinner = Spinner;\r\n","// Dialog.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\nimport { Panel } from '../core/Panel';\r\n\r\n/**\r\n * @class Dialog\r\n */\r\n\r\nexport class Dialog\r\n{\r\n static _last_id = 0;\r\n\r\n id: string;\r\n root: HTMLDialogElement;\r\n panel: Panel;\r\n title: HTMLDivElement;\r\n size: any[] = [];\r\n branchData: any;\r\n\r\n close: () => void = () => {};\r\n\r\n _oncreate: any;\r\n\r\n constructor( title?: string, callback?: any, options: any = {} )\r\n {\r\n if ( !callback )\r\n {\r\n console.warn( \"Content is empty, add some components using 'callback' parameter!\" );\r\n }\r\n\r\n this._oncreate = callback;\r\n this.id = LX.guidGenerator();\r\n\r\n const size = options.size ?? [],\r\n position = options.position ?? [],\r\n draggable = options.draggable ?? true,\r\n dockable = options.dockable ?? false,\r\n modal = options.modal ?? false;\r\n\r\n let root = document.createElement( 'dialog' );\r\n root.className = 'lexdialog ' + ( options.className ?? '' );\r\n root.id = options.id ?? 'dialog' + Dialog._last_id++;\r\n root.dataset['modal'] = modal;\r\n LX.root.appendChild( root );\r\n\r\n LX.doAsync( () => {\r\n modal ? root.showModal() : root.show();\r\n }, 10 );\r\n\r\n let that = this;\r\n\r\n const titleDiv = document.createElement( 'div' );\r\n\r\n if ( title )\r\n {\r\n titleDiv.className = 'lexdialogtitle';\r\n titleDiv.innerHTML = title;\r\n titleDiv.setAttribute( 'draggable', 'false' );\r\n root.appendChild( titleDiv );\r\n }\r\n\r\n if ( options.closable ?? true )\r\n {\r\n this.close = () => {\r\n if ( options.onBeforeClose )\r\n {\r\n options.onBeforeClose( this );\r\n }\r\n\r\n if ( !options.onclose )\r\n {\r\n root.close();\r\n\r\n LX.doAsync( () => {\r\n that.panel.clear();\r\n root.remove();\r\n }, 150 );\r\n }\r\n else\r\n {\r\n options.onclose( this.root );\r\n }\r\n };\r\n\r\n const closeButton = LX.makeIcon( 'X', { title: 'Close', iconClass: 'lexdialogcloser' } );\r\n closeButton.addEventListener( 'click', this.close );\r\n\r\n const dockButton = LX.makeIcon( 'Minus', { title: 'Dock', iconClass: 'ml-auto mr-2' } );\r\n dockButton.addEventListener( 'click', () => {\r\n const data = this.branchData;\r\n const panel = data.panel;\r\n const panelChildCount = panel.root.childElementCount;\r\n\r\n const branch = panel.branch( data.name, { closed: data.closed } );\r\n branch.components = data.components;\r\n\r\n for ( let w of branch.components )\r\n {\r\n branch.content.appendChild( w.root );\r\n }\r\n\r\n if ( data.childIndex < panelChildCount )\r\n {\r\n panel.root.insertChildAtIndex( branch.root, data.childIndex );\r\n }\r\n\r\n this.close();\r\n } );\r\n\r\n if ( title )\r\n {\r\n if ( dockable ) titleDiv.appendChild( dockButton );\r\n titleDiv.appendChild( closeButton );\r\n }\r\n else\r\n {\r\n closeButton.classList.add( 'notitle' );\r\n root.appendChild( closeButton );\r\n }\r\n }\r\n\r\n const panel = new LX.Panel();\r\n panel.root.classList.add( 'lexdialogcontent' );\r\n\r\n if ( !title )\r\n {\r\n panel.root.classList.add( 'notitle' );\r\n }\r\n\r\n if ( callback )\r\n {\r\n callback.call( this, panel );\r\n }\r\n\r\n root.appendChild( panel.root );\r\n\r\n // Make branches have a distintive to manage some cases\r\n panel.root.querySelectorAll( '.lexbranch' ).forEach( ( b: HTMLElement ) => b.classList.add( 'dialog' ) );\r\n\r\n this.panel = panel;\r\n this.root = root;\r\n this.title = titleDiv;\r\n\r\n if ( draggable )\r\n {\r\n LX.makeDraggable( root, Object.assign( { targetClass: 'lexdialogtitle' }, options ) );\r\n }\r\n\r\n // Process position and size\r\n if ( size.length && typeof ( size[0] ) != 'string' )\r\n {\r\n size[0] += 'px';\r\n }\r\n\r\n if ( size.length && typeof ( size[1] ) != 'string' )\r\n {\r\n size[1] += 'px';\r\n }\r\n\r\n root.style.width = size[0] ? ( size[0] ) : '25%';\r\n root.style.height = size[1] ? ( size[1] ) : 'auto';\r\n root.style.translate = options.position ? 'unset' : '-50% -50%';\r\n\r\n if ( options.size )\r\n {\r\n this.size = size;\r\n }\r\n\r\n root.style.left = position[0] ?? '50%';\r\n root.style.top = position[1] ?? '50%';\r\n\r\n panel.root.style.height = title ? 'calc( 100% - ' + ( titleDiv.offsetHeight + 30 ) + 'px )' : 'calc(100%)';\r\n }\r\n\r\n destroy()\r\n {\r\n this.root.remove();\r\n }\r\n\r\n refresh()\r\n {\r\n this.panel.root.innerHTML = '';\r\n this._oncreate.call( this, this.panel );\r\n }\r\n\r\n setPosition( x: number, y: number )\r\n {\r\n this.root.style.left = `${x}px`;\r\n this.root.style.top = `${y}px`;\r\n }\r\n\r\n setTitle( title: string )\r\n {\r\n const titleDOM: HTMLElement | null = this.root.querySelector( '.lexdialogtitle' );\r\n if ( !titleDOM )\r\n {\r\n return;\r\n }\r\n titleDOM.innerText = title;\r\n }\r\n}\r\n\r\nLX.Dialog = Dialog;\r\n","// AlertDialog.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\nimport { Panel } from './../core/Panel';\r\nimport { Dialog } from './Dialog';\r\n\r\n/**\r\n * @class AlertDialog\r\n */\r\n\r\nexport class AlertDialog extends Dialog\r\n{\r\n constructor( title: string, message: string, callback: any, options: any = {} )\r\n {\r\n options.closable = false;\r\n options.draggable = false;\r\n options.modal = true;\r\n\r\n super( undefined, ( p: Panel ) => {\r\n p.root.classList.add( 'p-4', 'flex', 'flex-col', 'gap-2' );\r\n\r\n LX.makeContainer( [ '100%', '100%' ], 'text-xl font-medium', title, p );\r\n\r\n p.addTextArea( null, message, null, { disabled: true, fitHeight: true,\r\n inputClass: 'bg-none fg-tertiary' } );\r\n\r\n p.sameLine( 2, 'justify-end' );\r\n p.addButton( null, options.cancelText ?? 'Cancel', () => this.destroy(), {\r\n buttonClass: 'border bg-primary'\r\n } );\r\n p.addButton( null, options.continueText ?? 'Continue', () => {\r\n this.destroy();\r\n if ( callback ) callback();\r\n }, { buttonClass: 'contrast' } );\r\n }, options );\r\n }\r\n}\r\n\r\nLX.AlertDialog = AlertDialog;\r\n","// ContextMenu.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\n\r\n/**\r\n * @class ContextMenu\r\n */\r\n\r\nexport class ContextMenu\r\n{\r\n root: any;\r\n items: any[];\r\n colors: any;\r\n\r\n _parent: any;\r\n\r\n constructor( event: any, title: string, options: any = {} )\r\n {\r\n // Remove all context menus\r\n document.body.querySelectorAll( '.lexcontextmenu' ).forEach( ( e ) => e.remove() );\r\n\r\n this.root = document.createElement( 'div' );\r\n this.root.className = 'lexcontextmenu';\r\n this.root.addEventListener( 'mouseleave', function( this: HTMLElement )\r\n { // TOCHECK\r\n this.remove();\r\n } );\r\n\r\n this.items = [];\r\n this.colors = {};\r\n\r\n if ( title )\r\n {\r\n let item: Record<string, any> = {};\r\n item[title] = [];\r\n item['className'] = 'cmtitle';\r\n item['icon'] = options.icon;\r\n this.items.push( item );\r\n }\r\n\r\n const nestedDialog = event.target.closest( 'dialog' );\r\n if ( nestedDialog && nestedDialog.dataset['modal'] == 'true' )\r\n {\r\n this._parent = nestedDialog;\r\n }\r\n else\r\n {\r\n this._parent = LX.root;\r\n }\r\n\r\n this._parent.appendChild( this.root );\r\n\r\n // Set position based on parent\r\n const position = [ event.x - 48, event.y - 8 ];\r\n if ( this._parent instanceof HTMLDialogElement )\r\n {\r\n let parentRect = this._parent.getBoundingClientRect();\r\n position[0] -= parentRect.x;\r\n position[1] -= parentRect.y;\r\n }\r\n\r\n this.root.style.left = `${position[0]}px`;\r\n this.root.style.top = `${position[1]}px`;\r\n }\r\n\r\n _adjustPosition( div: HTMLElement, margin: number, useAbsolute = false )\r\n {\r\n let rect = div.getBoundingClientRect();\r\n let left = parseInt( div.style.left );\r\n let top = parseInt( div.style.top );\r\n\r\n if ( !useAbsolute )\r\n {\r\n let width = rect.width;\r\n if ( rect.left < 0 )\r\n {\r\n left = margin;\r\n }\r\n else if ( window.innerWidth - rect.right < 0 )\r\n {\r\n left = window.innerWidth - width - margin;\r\n }\r\n\r\n if ( rect.top < 0 )\r\n {\r\n top = margin;\r\n }\r\n else if ( ( rect.top + rect.height ) > window.innerHeight )\r\n {\r\n div.style.marginTop = '';\r\n top = window.innerHeight - rect.height - margin;\r\n }\r\n }\r\n else\r\n {\r\n let dt = window.innerWidth - rect.right;\r\n if ( dt < 0 )\r\n {\r\n left = div.offsetLeft + ( dt - margin );\r\n }\r\n\r\n dt = window.innerHeight - ( rect.top + rect.height );\r\n if ( dt < 0 )\r\n {\r\n top = div.offsetTop + ( dt - margin + 20 );\r\n }\r\n }\r\n\r\n div.style.left = `${left}px`;\r\n div.style.top = `${top}px`;\r\n }\r\n\r\n _createSubmenu( o: any, k: string, c: any, d: number )\r\n {\r\n this.root.querySelectorAll( '.lexcontextmenu' ).forEach( ( m: HTMLElement ) => m.remove() );\r\n\r\n let contextmenu = document.createElement( 'div' );\r\n contextmenu.className = 'lexcontextmenu';\r\n c.appendChild( contextmenu );\r\n\r\n for ( let i = 0; i < o[k].length; ++i )\r\n {\r\n const subitem = o[k][i];\r\n const subkey = Object.keys( subitem )[0];\r\n this._createEntry( subitem, subkey, contextmenu, d );\r\n }\r\n\r\n const rect = c.getBoundingClientRect();\r\n contextmenu.style.left = ( rect.x + rect.width ) + 'px';\r\n contextmenu.style.marginTop = '-31px'; // Force to be at the first element level\r\n\r\n // Set final width\r\n this._adjustPosition( contextmenu, 6 );\r\n }\r\n\r\n _createEntry( o: any, k: string, c: any, d: number )\r\n {\r\n const hasSubmenu = o[k].length;\r\n let entry = document.createElement( 'div' );\r\n entry.className = 'lexmenuboxentry' + ( o['className'] ? ' ' + o['className'] : '' );\r\n entry.id = o.id ?? ( 'eId' + LX.getSupportedDOMName( k ) );\r\n entry.innerHTML = '';\r\n const icon = o['icon'];\r\n if ( icon )\r\n {\r\n entry.appendChild( LX.makeIcon( icon, { svgClass: 'sm' } ) );\r\n }\r\n const disabled = o['disabled'];\r\n entry.innerHTML += \"<div class='lexentryname\" + ( disabled ? ' disabled' : '' ) + \"'>\" + k + '</div>';\r\n c.appendChild( entry );\r\n\r\n if ( this.colors[k] )\r\n {\r\n entry.style.borderColor = this.colors[k];\r\n }\r\n\r\n if ( k == '' )\r\n {\r\n entry.className += ' cmseparator';\r\n return;\r\n }\r\n\r\n // Add callback\r\n entry.addEventListener( 'click', ( e ) => {\r\n e.stopPropagation();\r\n e.stopImmediatePropagation();\r\n\r\n if ( disabled )\r\n {\r\n return;\r\n }\r\n\r\n const f = o['callback'];\r\n if ( f )\r\n {\r\n f.call( this, k, entry );\r\n this.root.remove();\r\n }\r\n\r\n if ( !hasSubmenu )\r\n {\r\n return;\r\n }\r\n\r\n if ( LX.OPEN_CONTEXTMENU_ENTRY == 'click' )\r\n {\r\n this._createSubmenu( o, k, entry, ++d );\r\n }\r\n } );\r\n\r\n if ( !hasSubmenu )\r\n {\r\n return;\r\n }\r\n\r\n const submenuIcon = LX.makeIcon( 'Menu', { svgClass: 'sm' } );\r\n entry.appendChild( submenuIcon );\r\n\r\n if ( LX.OPEN_CONTEXTMENU_ENTRY == 'mouseover' )\r\n {\r\n entry.addEventListener( 'mouseover', ( e ) => {\r\n if ( entry.dataset['built'] == 'true' ) return;\r\n entry.dataset['built'] = 'true';\r\n this._createSubmenu( o, k, entry, ++d );\r\n e.stopPropagation();\r\n } );\r\n }\r\n\r\n entry.addEventListener( 'mouseleave', () => {\r\n d = -1; // Reset depth\r\n c.querySelectorAll( '.lexcontextmenu' ).forEach( ( m: HTMLElement ) => m.remove() );\r\n } );\r\n }\r\n\r\n onCreate()\r\n {\r\n LX.doAsync( () => this._adjustPosition( this.root, 6 ) );\r\n }\r\n\r\n add( path: string, options: any = {} )\r\n {\r\n if ( options.constructor == Function )\r\n {\r\n options = { callback: options };\r\n }\r\n\r\n // process path\r\n path = path + ''; // make string!\r\n const tokens = path.split( '/' );\r\n\r\n // assign color to last token in path\r\n const lastPath = tokens[tokens.length - 1];\r\n this.colors[lastPath] = options.color;\r\n\r\n let idx = 0;\r\n\r\n const insert = ( token: string | undefined, list: any ) => {\r\n if ( token == undefined ) return;\r\n\r\n let found = null;\r\n list.forEach( ( o: any ) => {\r\n const keys = Object.keys( o );\r\n const key = keys.find( ( t ) => t == token );\r\n if ( key ) found = o[key];\r\n } );\r\n\r\n if ( found )\r\n {\r\n insert( tokens[idx++], found );\r\n }\r\n else\r\n {\r\n let item: Record<string, any> = {};\r\n item[token] = [];\r\n const nextToken = tokens[idx++];\r\n // Check if last token -> add callback\r\n if ( !nextToken )\r\n {\r\n item['id'] = options.id;\r\n item['icon'] = options.icon;\r\n item['callback'] = options.callback;\r\n item['disabled'] = options.disabled ?? false;\r\n }\r\n\r\n list.push( item );\r\n insert( nextToken, item[token] );\r\n }\r\n };\r\n\r\n insert( tokens[idx++], this.items );\r\n\r\n // Set parents\r\n\r\n const setParent = ( _item: any ) => {\r\n let key = Object.keys( _item )[0];\r\n let children = _item[key];\r\n\r\n if ( !children.length )\r\n {\r\n return;\r\n }\r\n\r\n if ( children.find( ( c: any ) => Object.keys( c )[0] == key ) == null )\r\n {\r\n let parent: Record<string, any> = {};\r\n parent[key] = [];\r\n parent['className'] = 'cmtitle';\r\n _item[key].unshift( parent );\r\n }\r\n\r\n for ( let child of _item[key] )\r\n {\r\n let k = Object.keys( child )[0];\r\n for ( let i = 0; i < child[k].length; ++i )\r\n {\r\n setParent( child );\r\n }\r\n }\r\n };\r\n\r\n for ( let item of this.items )\r\n {\r\n setParent( item );\r\n }\r\n\r\n // Create elements\r\n\r\n for ( let item of this.items )\r\n {\r\n let key = Object.keys( item )[0];\r\n let pKey = 'eId' + LX.getSupportedDOMName( key );\r\n\r\n // Item already created\r\n const id = '#' + ( item.id ?? pKey );\r\n if ( !this.root.querySelector( id ) )\r\n {\r\n this._createEntry( item, key, this.root, -1 );\r\n }\r\n }\r\n }\r\n\r\n setColor( token: string, color: any )\r\n {\r\n if ( color[0] !== '#' )\r\n {\r\n color = LX.rgbToHex( color );\r\n }\r\n\r\n this.colors[token] = color;\r\n }\r\n}\r\n\r\nLX.ContextMenu = ContextMenu;\r\n\r\nfunction addContextMenu( title: string, event: any, callback: any, options: any = {} )\r\n{\r\n const menu = new ContextMenu( event, title, options );\r\n\r\n if ( callback )\r\n {\r\n callback( menu );\r\n }\r\n\r\n menu.onCreate();\r\n\r\n return menu;\r\n}\r\n\r\nLX.addContextMenu = addContextMenu;\r\n","// DropdownMenu.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\nimport { Checkbox } from './Checkbox';\r\n\r\n/**\r\n * @class DropdownMenu\r\n */\r\n\r\nexport class DropdownMenu\r\n{\r\n static currentMenu: DropdownMenu | null = null;\r\n\r\n root: any;\r\n side: string = 'bottom';\r\n align: string = 'center';\r\n sideOffset: number = 0;\r\n alignOffset: number = 0;\r\n avoidCollisions: boolean = true;\r\n onBlur: any;\r\n event: any;\r\n inPlace: boolean = false;\r\n\r\n _trigger: any;\r\n _items: any[] = [];\r\n _parent: any;\r\n _windowPadding: number = 4;\r\n _onClick: any;\r\n _radioGroup: { name: string; selected: any; } | undefined;\r\n\r\n invalid: boolean = false;\r\n\r\n constructor( trigger: any, items: any[], options: any = {} )\r\n {\r\n console.assert( trigger, 'DropdownMenu needs a DOM element as trigger!' );\r\n\r\n if ( DropdownMenu.currentMenu || !items?.length )\r\n {\r\n DropdownMenu.currentMenu?.destroy();\r\n this.invalid = true;\r\n return;\r\n }\r\n\r\n this._trigger = trigger;\r\n trigger.classList.add( 'triggered' );\r\n trigger.ddm = this;\r\n\r\n this._items = items;\r\n\r\n this.side = options.side ?? 'bottom';\r\n this.align = options.align ?? 'center';\r\n this.sideOffset = options.sideOffset ?? 0;\r\n this.alignOffset = options.alignOffset ?? 0;\r\n this.avoidCollisions = options.avoidCollisions ?? true;\r\n this.onBlur = options.onBlur;\r\n this.event = options.event;\r\n\r\n this.root = document.createElement( 'div' );\r\n this.root.id = 'root';\r\n this.root.dataset['side'] = this.side;\r\n this.root.tabIndex = '1';\r\n this.root.className = 'lexdropdownmenu';\r\n\r\n const nestedDialog = trigger.closest( 'dialog' );\r\n if ( nestedDialog && nestedDialog.dataset['modal'] == 'true' )\r\n {\r\n this._parent = nestedDialog;\r\n }\r\n else\r\n {\r\n this._parent = LX.root;\r\n }\r\n\r\n this._parent.appendChild( this.root );\r\n\r\n this._create( this._items );\r\n\r\n DropdownMenu.currentMenu = this;\r\n\r\n LX.doAsync( () => {\r\n this._adjustPosition();\r\n\r\n this.root.focus();\r\n\r\n this._onClick = ( e: any ) => {\r\n // Check if the click is inside a menu or on the trigger\r\n if ( e.target && ( e.target.closest( '.lexdropdownmenu' ) != undefined || e.target == this._trigger ) )\r\n {\r\n return;\r\n }\r\n\r\n this.destroy( true );\r\n };\r\n\r\n document.body.addEventListener( 'mousedown', this._onClick, true );\r\n document.body.addEventListener( 'focusin', this._onClick, true );\r\n }, 10 );\r\n }\r\n\r\n destroy( blurEvent: boolean = false )\r\n {\r\n this._trigger.classList.remove( 'triggered' );\r\n\r\n delete this._trigger.ddm;\r\n\r\n document.body.removeEventListener( 'mousedown', this._onClick, true );\r\n document.body.removeEventListener( 'focusin', this._onClick, true );\r\n\r\n this._parent.querySelectorAll( '.lexdropdownmenu' ).forEach( ( m: any ) => {\r\n m.remove();\r\n } );\r\n\r\n DropdownMenu.currentMenu = null;\r\n\r\n if ( blurEvent && this.onBlur )\r\n {\r\n this.onBlur();\r\n }\r\n }\r\n\r\n _create( items: any[], parentDom?: any )\r\n {\r\n if ( !parentDom )\r\n {\r\n parentDom = this.root;\r\n }\r\n else\r\n {\r\n const parentRect = parentDom.getBoundingClientRect();\r\n\r\n let newParent: any = document.createElement( 'div' );\r\n newParent.tabIndex = '1';\r\n newParent.className = 'lexdropdownmenu';\r\n newParent.dataset['id'] = parentDom.dataset['id'];\r\n newParent.dataset['side'] = 'right'; // submenus always come from the right\r\n this._parent.appendChild( newParent );\r\n\r\n newParent.currentParent = parentDom;\r\n parentDom = newParent;\r\n\r\n LX.doAsync( () => {\r\n const position = [ parentRect.x + parentRect.width, parentRect.y ];\r\n\r\n if ( this._parent instanceof HTMLDialogElement )\r\n {\r\n let rootParentRect = this._parent.getBoundingClientRect();\r\n position[0] -= rootParentRect.x;\r\n position[1] -= rootParentRect.y;\r\n }\r\n\r\n if ( this.avoidCollisions )\r\n {\r\n position[0] = LX.clamp( position[0], 0,\r\n window.innerWidth - newParent.offsetWidth - this._windowPadding );\r\n position[1] = LX.clamp( position[1], 0,\r\n window.innerHeight - newParent.offsetHeight - this._windowPadding );\r\n }\r\n\r\n newParent.style.left = `${position[0]}px`;\r\n newParent.style.top = `${position[1]}px`;\r\n }, 10 );\r\n }\r\n\r\n let applyIconPadding = items.filter( ( i: any ) => {\r\n return ( i?.icon != undefined ) || ( i?.checked != undefined );\r\n } ).length > 0;\r\n\r\n for ( let item of items )\r\n {\r\n this._createItem( item, parentDom, applyIconPadding );\r\n }\r\n }\r\n\r\n _createItem( item: any, parentDom: any, applyIconPadding?: boolean )\r\n {\r\n if ( !item )\r\n {\r\n this._addSeparator( parentDom );\r\n return;\r\n }\r\n\r\n const key = item.name ?? item;\r\n const pKey = LX.getSupportedDOMName( key );\r\n\r\n // Item already created\r\n if ( parentDom.querySelector( '#' + pKey ) )\r\n {\r\n return;\r\n }\r\n\r\n const menuItem: any = document.createElement( 'div' );\r\n menuItem.className = 'lexdropdownmenuitem' + ( ( item.name || item.options ) ? '' : ' label' )\r\n + ( item.disabled ?? false ? ' disabled' : '' ) + ( ` ${item.className ?? ''}` );\r\n menuItem.dataset['id'] = pKey;\r\n menuItem.innerHTML = `<span class=\"ellipsis-overflow\">${key}</span>`;\r\n menuItem.tabIndex = '1';\r\n parentDom.appendChild( menuItem );\r\n\r\n if ( item.constructor === String )\r\n { // Label case\r\n return;\r\n }\r\n\r\n if ( item.submenu )\r\n {\r\n const submenuIcon = LX.makeIcon( 'Right', { svgClass: 'sm' } );\r\n menuItem.appendChild( submenuIcon );\r\n }\r\n else if ( item.kbd )\r\n {\r\n item.kbd = [].concat( item.kbd );\r\n\r\n const kbd = LX.makeKbd( item.kbd );\r\n menuItem.appendChild( kbd );\r\n\r\n document.addEventListener( 'keydown', ( e ) => {\r\n if ( !this._trigger.ddm ) return;\r\n e.preventDefault();\r\n // Check if it's a letter or other key\r\n let kdbKey = item.kbd.join( '' );\r\n kdbKey = kdbKey.length == 1 ? kdbKey.toLowerCase() : kdbKey;\r\n if ( kdbKey == e.key )\r\n {\r\n menuItem.click();\r\n }\r\n } );\r\n }\r\n\r\n const disabled = item.disabled ?? false;\r\n\r\n if ( this._radioGroup !== undefined )\r\n {\r\n if ( item.name === this._radioGroup.selected )\r\n {\r\n const icon = LX.makeIcon( 'Circle', { svgClass: 'xxs fill-current' } );\r\n menuItem.prepend( icon );\r\n }\r\n\r\n menuItem.setAttribute( 'data-radioname', this._radioGroup.name );\r\n }\r\n else if ( item.icon )\r\n {\r\n const icon = item.icon.constructor === String\r\n ? LX.makeIcon( item.icon, { svgClass: disabled ? 'fg-tertiary' : item.svgClass ?? item.className } )\r\n : item.icon;\r\n menuItem.prepend( icon );\r\n }\r\n else if ( item.checked == undefined && applyIconPadding )\r\n { // no checkbox, no icon, apply padding if there's checkbox or icon in other items\r\n menuItem.classList.add( 'pl-8' );\r\n }\r\n\r\n if ( disabled )\r\n {\r\n return;\r\n }\r\n\r\n if ( item.checked != undefined )\r\n {\r\n const checkbox = new Checkbox( pKey + '_entryChecked', item.checked, ( v: boolean ) => {\r\n const f = item['callback'];\r\n item.checked = v;\r\n if ( f )\r\n {\r\n f.call( this, key, v, menuItem );\r\n }\r\n }, { className: 'accent' } );\r\n const input = checkbox.root.querySelector( 'input' );\r\n input.classList.add( 'ml-auto' );\r\n menuItem.appendChild( input );\r\n\r\n menuItem.addEventListener( 'click', ( e: any ) => {\r\n if ( e.target.type == 'checkbox' ) return;\r\n input.checked = !input.checked;\r\n checkbox.set( input.checked );\r\n } );\r\n }\r\n else\r\n {\r\n menuItem.addEventListener( 'click', ( e: MouseEvent ) => {\r\n const radioName = menuItem.getAttribute( 'data-radioname' );\r\n if ( radioName )\r\n {\r\n this._trigger[radioName] = key;\r\n }\r\n\r\n const f = item.callback;\r\n if ( f )\r\n {\r\n f.call( this, key, menuItem, radioName );\r\n }\r\n\r\n // If has options, it's a radio group label, so don't close the menu\r\n if ( !item.options && ( item.closeOnClick ?? true ) )\r\n {\r\n this.destroy( true );\r\n }\r\n } );\r\n }\r\n\r\n menuItem.addEventListener( 'mouseover', ( e: MouseEvent ) => {\r\n let path = menuItem.dataset['id'];\r\n if ( !path ) return;\r\n let p = parentDom;\r\n\r\n while ( p )\r\n {\r\n path += '/' + p.dataset['id'];\r\n p = p.currentParent?.parentElement;\r\n }\r\n\r\n this._parent.querySelectorAll( '.lexdropdownmenu' ).forEach( ( m: any ) => {\r\n if ( !path.includes( m.dataset['id'] ) )\r\n {\r\n m.currentParent.built = false;\r\n m.remove();\r\n }\r\n } );\r\n\r\n if ( item.submenu && this.inPlace )\r\n {\r\n if ( menuItem.built )\r\n {\r\n return;\r\n }\r\n menuItem.built = true;\r\n this._create( item.submenu, menuItem );\r\n }\r\n\r\n e.stopPropagation();\r\n } );\r\n\r\n if ( item.options )\r\n {\r\n console.assert( this._trigger[item.name] && 'An item of the radio group must be selected!' );\r\n this._radioGroup = {\r\n name: item.name,\r\n selected: this._trigger[item.name]\r\n };\r\n\r\n for ( let o of item.options )\r\n {\r\n this._createItem( o, parentDom, applyIconPadding );\r\n }\r\n\r\n delete this._radioGroup;\r\n\r\n this._addSeparator();\r\n }\r\n }\r\n\r\n _adjustPosition()\r\n {\r\n const position = [ 0, 0 ];\r\n const rect = this._trigger.getBoundingClientRect();\r\n\r\n // Place menu using trigger position and user options\r\n if ( !this.event )\r\n {\r\n let alignWidth = true;\r\n\r\n switch ( this.side )\r\n {\r\n case 'left':\r\n position[0] += rect.x - this.root.offsetWidth - this.sideOffset;\r\n alignWidth = false;\r\n break;\r\n case 'right':\r\n position[0] += rect.x + rect.width + this.sideOffset;\r\n alignWidth = false;\r\n break;\r\n case 'top':\r\n position[1] += rect.y - this.root.offsetHeight - this.sideOffset;\r\n alignWidth = true;\r\n break;\r\n case 'bottom':\r\n position[1] += rect.y + rect.height + this.sideOffset;\r\n alignWidth = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n switch ( this.align )\r\n {\r\n case 'start':\r\n if ( alignWidth ) position[0] += rect.x;\r\n else position[1] += rect.y;\r\n break;\r\n case 'center':\r\n if ( alignWidth ) position[0] += ( rect.x + rect.width * 0.5 ) - this.root.offsetWidth * 0.5;\r\n else position[1] += ( rect.y + rect.height * 0.5 ) - this.root.offsetHeight * 0.5;\r\n break;\r\n case 'end':\r\n if ( alignWidth ) position[0] += rect.x - this.root.offsetWidth + rect.width;\r\n else position[1] += rect.y - this.root.offsetHeight + rect.height;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if ( alignWidth ) position[0] += this.alignOffset;\r\n else position[1] += this.alignOffset;\r\n }\r\n // Offset position based on event\r\n else\r\n {\r\n position[0] = this.event.x;\r\n position[1] = this.event.y;\r\n }\r\n\r\n if ( this._parent instanceof HTMLDialogElement )\r\n {\r\n let parentRect = this._parent.getBoundingClientRect();\r\n position[0] -= parentRect.x;\r\n position[1] -= parentRect.y;\r\n }\r\n\r\n if ( this.avoidCollisions )\r\n {\r\n position[0] = LX.clamp( position[0], 0, window.innerWidth - this.root.offsetWidth - this._windowPadding );\r\n position[1] = LX.clamp( position[1], 0, window.innerHeight - this.root.offsetHeight - this._windowPadding );\r\n }\r\n\r\n this.root.style.left = `${position[0]}px`;\r\n this.root.style.top = `${position[1]}px`;\r\n this.inPlace = true;\r\n }\r\n\r\n _addSeparator( parent: HTMLElement | null = null )\r\n {\r\n const separator = document.createElement( 'div' );\r\n separator.className = 'separator';\r\n parent = parent ?? this.root;\r\n parent?.appendChild( separator );\r\n }\r\n}\r\n\r\nLX.DropdownMenu = DropdownMenu;\r\n\r\nexport function addDropdownMenu( trigger: any, items: any[], options: any = {} ): DropdownMenu | null\r\n{\r\n const menu = new DropdownMenu( trigger, items, options );\r\n if ( !menu.invalid )\r\n {\r\n return menu;\r\n }\r\n return null;\r\n}\r\n\r\nLX.addDropdownMenu = addDropdownMenu;\r\n","// Footer.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\n\r\n/**\r\n * @class Footer\r\n */\r\n\r\nexport class Footer\r\n{\r\n /**\r\n * @param {Object} options:\r\n * columns: Array with data per column { title, items: [ { title, link } ] }\r\n * credits: html string\r\n * socials: Array with data per item { title, link, icon }\r\n * className: Extra class to customize\r\n */\r\n\r\n root: any;\r\n\r\n constructor( options: any = {} )\r\n {\r\n const root = document.createElement( 'footer' );\r\n root.className = 'lexfooter' + ` ${options.className ?? ''}`;\r\n\r\n const wrapper = document.createElement( 'div' );\r\n wrapper.style.minHeight = '48px';\r\n wrapper.className = 'w-full';\r\n root.appendChild( wrapper );\r\n\r\n // const hr = document.createElement( \"hr\" );\r\n // wrapper.appendChild( hr );\r\n\r\n if ( options.columns && options.columns.constructor == Array )\r\n {\r\n const cols = document.createElement( 'div' );\r\n cols.className = 'columns';\r\n cols.style.gridTemplateColumns = '1fr '.repeat( options.columns.length );\r\n wrapper.appendChild( cols );\r\n\r\n for ( let col of options.columns )\r\n {\r\n const colDom = document.createElement( 'div' );\r\n colDom.className = 'col';\r\n cols.appendChild( colDom );\r\n\r\n const colTitle = document.createElement( 'h2' );\r\n colTitle.innerHTML = col.title;\r\n colDom.appendChild( colTitle );\r\n\r\n if ( !col.items || !col.items.length )\r\n {\r\n continue;\r\n }\r\n\r\n const itemListDom = document.createElement( 'ul' );\r\n colDom.appendChild( itemListDom );\r\n\r\n for ( let item of col.items )\r\n {\r\n const itemDom = document.createElement( 'li' );\r\n itemDom.innerHTML = `<a class=\"\" href=\"${item.link}\">${item.title}</a>`;\r\n itemListDom.appendChild( itemDom );\r\n }\r\n }\r\n }\r\n\r\n if ( options.credits || options.socials )\r\n {\r\n const creditsSocials = document.createElement( 'div' );\r\n creditsSocials.className = 'credits-and-socials';\r\n wrapper.appendChild( creditsSocials );\r\n\r\n if ( options.credits )\r\n {\r\n const credits = document.createElement( 'p' );\r\n credits.innerHTML = options.credits;\r\n creditsSocials.appendChild( credits );\r\n }\r\n\r\n if ( options.socials )\r\n {\r\n const socials = document.createElement( 'div' );\r\n socials.className = 'socials flex flex-row gap-1 my-2 justify-end';\r\n\r\n for ( let social of options.socials )\r\n {\r\n const socialIcon = LX.makeIcon( social.icon, { title: social.title, svgClass: 'xl' } );\r\n socialIcon.href = social.link;\r\n socialIcon.target = '_blank';\r\n socials.appendChild( socialIcon );\r\n }\r\n\r\n creditsSocials.appendChild( socials );\r\n }\r\n }\r\n\r\n // Append directly to body\r\n const parent = options.parent ?? document.body;\r\n parent.appendChild( root );\r\n\r\n // Set always at bottom\r\n if ( root.previousElementSibling )\r\n {\r\n ( root.previousElementSibling as any ).style.flexGrow = '1';\r\n }\r\n\r\n this.root = root;\r\n }\r\n}\r\n\r\nLX.Footer = Footer;\r\n","// PocketDialog.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\nimport { Dialog } from './Dialog';\r\n\r\n/**\r\n * @class PocketDialog\r\n */\r\n\r\nexport class PocketDialog extends Dialog\r\n{\r\n static TOP = 0;\r\n static BOTTOM = 1;\r\n\r\n dockPosition: number = PocketDialog.TOP;\r\n minimized: boolean = false;\r\n\r\n constructor( title: string, callback: any, options: any = {} )\r\n {\r\n options.draggable = options.draggable ?? false;\r\n options.closable = options.closable ?? false;\r\n\r\n const dragMargin = 3;\r\n\r\n super( title, callback, options );\r\n\r\n let that = this;\r\n // Update margins on branch title closes/opens\r\n LX.addSignal( '@on_branch_closed', this.panel, ( closed: boolean ) => {\r\n if ( this.dockPosition == PocketDialog.BOTTOM )\r\n {\r\n this.root.style.top = `calc(100% - ${this.root.offsetHeight + dragMargin}px)`;\r\n }\r\n } );\r\n\r\n // Custom\r\n this.root.classList.add( 'pocket' );\r\n\r\n this.root.style.translate = 'none';\r\n this.root.style.top = '0';\r\n this.root.style.left = 'unset';\r\n\r\n if ( !options.position )\r\n {\r\n this.root.style.right = dragMargin + 'px';\r\n this.root.style.top = dragMargin + 'px';\r\n }\r\n\r\n this.panel.root.style.width = '100%';\r\n this.panel.root.style.height = '100%';\r\n\r\n const innerTitle = this.title as any;\r\n innerTitle.tabIndex = -1;\r\n innerTitle.addEventListener( 'click', ( e: MouseEvent ) => {\r\n if ( innerTitle.eventCatched )\r\n {\r\n innerTitle.eventCatched = false;\r\n return;\r\n }\r\n\r\n // Sized dialogs have to keep their size\r\n if ( this.size )\r\n {\r\n if ( !this.minimized ) this.root.style.height = 'auto';\r\n else this.root.style.height = this.size[1];\r\n }\r\n\r\n this.root.classList.toggle( 'minimized' );\r\n this.minimized = !this.minimized;\r\n\r\n if ( this.dockPosition == PocketDialog.BOTTOM )\r\n {\r\n that.root.style.top = this.root.classList.contains( 'minimized' )\r\n ? `calc(100% - ${that.title.offsetHeight + 6}px)`\r\n : `calc(100% - ${that.root.offsetHeight + dragMargin}px)`;\r\n }\r\n } );\r\n\r\n if ( !options.draggable )\r\n {\r\n const float = options.float;\r\n\r\n if ( float )\r\n {\r\n for ( let i = 0; i < float.length; i++ )\r\n {\r\n const t = float[i];\r\n switch ( t )\r\n {\r\n case 'b':\r\n this.root.style.top = `calc(100% - ${this.root.offsetHeight + dragMargin}px)`;\r\n break;\r\n case 'l':\r\n this.root.style.right = 'unset';\r\n this.root.style.left = options.position ? options.position[1] : ( `${dragMargin}px` );\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.root.classList.add( 'dockable' );\r\n\r\n innerTitle.addEventListener( 'keydown', function( e: KeyboardEvent )\r\n {\r\n if ( !e.ctrlKey )\r\n {\r\n return;\r\n }\r\n\r\n that.root.style.right = 'unset';\r\n\r\n if ( e.key == 'ArrowLeft' )\r\n {\r\n that.root.style.left = '0px';\r\n }\r\n else if ( e.key == 'ArrowRight' )\r\n {\r\n that.root.style.left = `calc(100% - ${that.root.offsetWidth + dragMargin}px)`;\r\n }\r\n else if ( e.key == 'ArrowUp' )\r\n {\r\n that.root.style.top = '0px';\r\n that.dockPosition = PocketDialog.TOP;\r\n }\r\n else if ( e.key == 'ArrowDown' )\r\n {\r\n that.root.style.top = `calc(100% - ${that.root.offsetHeight + dragMargin}px)`;\r\n that.dockPosition = PocketDialog.BOTTOM;\r\n }\r\n } );\r\n }\r\n }\r\n}\r\n\r\nLX.PocketDialog = PocketDialog;\r\n","// Sheet.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\n\r\n/**\r\n * @class Sheet\r\n */\r\n\r\nexport class Sheet\r\n{\r\n side: string = 'left';\r\n root: any;\r\n\r\n _onClick: any;\r\n\r\n constructor( size: string, content: any, options: any = {} )\r\n {\r\n this.side = options.side ?? this.side;\r\n\r\n this.root = document.createElement( 'div' );\r\n this.root.dataset['side'] = this.side;\r\n this.root.tabIndex = '1';\r\n this.root.role = 'dialog';\r\n this.root.className = 'lexsheet fixed z-1000 bg-primary';\r\n document.body.appendChild( this.root );\r\n\r\n this.root.addEventListener( 'keydown', ( e: KeyboardEvent ) => {\r\n if ( e.key == 'Escape' )\r\n {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.destroy();\r\n }\r\n } );\r\n\r\n if ( content )\r\n {\r\n content = [].concat( content );\r\n content.forEach( ( e: any ) => {\r\n const domNode = e.root ?? e;\r\n this.root.appendChild( domNode );\r\n if ( e.onSheet )\r\n {\r\n e.onSheet();\r\n }\r\n } );\r\n }\r\n\r\n LX.doAsync( () => {\r\n LX.modal.toggle( false );\r\n\r\n switch ( this.side )\r\n {\r\n case 'left':\r\n this.root.style.left = '0';\r\n this.root.style.width = size;\r\n this.root.style.height = '100%';\r\n break;\r\n case 'right':\r\n this.root.style.right = '0';\r\n this.root.style.width = size;\r\n this.root.style.height = '100%';\r\n break;\r\n case 'top':\r\n this.root.style.left = '0';\r\n this.root.style.top = '0';\r\n this.root.style.width = '100%';\r\n this.root.style.height = size;\r\n break;\r\n case 'bottom':\r\n this.root.style.left = '0';\r\n this.root.style.bottom = '0';\r\n this.root.style.width = '100%';\r\n this.root.style.height = size;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n document.documentElement.setAttribute( 'data-scale', `sheet-${this.side}` );\r\n\r\n this.root.focus();\r\n\r\n this._onClick = ( e: any ) => {\r\n if ( e.target && ( this.root.contains( e.target ) ) )\r\n {\r\n return;\r\n }\r\n this.destroy();\r\n };\r\n\r\n document.body.addEventListener( 'mousedown', this._onClick, true );\r\n document.body.addEventListener( 'focusin', this._onClick, true );\r\n }, 10 );\r\n }\r\n\r\n destroy()\r\n {\r\n document.documentElement.setAttribute( 'data-scale', '' );\r\n\r\n document.body.removeEventListener( 'mousedown', this._onClick, true );\r\n document.body.removeEventListener( 'focusin', this._onClick, true );\r\n\r\n this.root.remove();\r\n\r\n LX.modal.toggle( true );\r\n }\r\n}\r\n\r\nLX.Sheet = Sheet;\r\n","// Sidebar.ts @jxarco\r\n\r\nimport { Area } from './../core/Area';\r\nimport { LX } from './../core/Namespace';\r\nimport { Panel } from '../core/Panel';\r\nimport { TextInput } from './TextInput';\r\n\r\n/**\r\n * @class Sidebar\r\n */\r\n\r\nexport class Sidebar\r\n{\r\n /**\r\n * @param {Object} options\r\n * className: Extra class to customize root element\r\n * filter: Add search bar to filter entries [false]\r\n * displaySelected: Indicate if an entry is displayed as selected\r\n * skipHeader: Do not use sidebar header [false]\r\n * headerImg: Image to be shown as avatar\r\n * headerIcon: Icon to be shown as avatar (from LX.ICONS)\r\n * headerTitle: Header title\r\n * headerSubtitle: Header subtitle\r\n * header: HTMLElement to add a custom header\r\n * skipFooter: Do not use sidebar footer [false]\r\n * footerImg: Image to be shown as avatar\r\n * footerIcon: Icon to be shown as avatar (from LX.ICONS)\r\n * footerTitle: Footer title\r\n * footerSubtitle: Footer subtitle\r\n * footer: HTMLElement to add a custom footer\r\n * collapsable: Sidebar can toggle between collapsed/expanded [true]\r\n * collapseToIcons: When Sidebar collapses, icons remains visible [true]\r\n * onHeaderPressed: Function to call when header is pressed\r\n * onFooterPressed: Function to call when footer is pressed\r\n */\r\n\r\n root: any;\r\n callback: any;\r\n\r\n items: any[] = [];\r\n icons: any = {};\r\n groups: any = {};\r\n\r\n side: string;\r\n collapsable: boolean;\r\n collapsed: boolean;\r\n filterString: string;\r\n filter: any; // DOM Element\r\n header: any;\r\n content: any;\r\n footer: any;\r\n resizeObserver: ResizeObserver | undefined = undefined;\r\n siblingArea: Area | undefined = undefined;\r\n currentGroup: any;\r\n collapseQueue: any;\r\n collapseContainer: any;\r\n\r\n _collapseWidth: string;\r\n\r\n private _displaySelected: boolean = true;\r\n\r\n get displaySelected(): boolean\r\n {\r\n return this._displaySelected;\r\n }\r\n\r\n set displaySelected( v: boolean )\r\n {\r\n this._displaySelected = v;\r\n if ( !v )\r\n {\r\n this.root.querySelectorAll( '.lexsidebarentry' )\r\n .forEach( ( e: HTMLElement ) => e.classList.remove( 'selected' ) );\r\n }\r\n }\r\n\r\n constructor( options: any = {} )\r\n {\r\n const mobile = navigator && /Android|iPhone/i.test( navigator.userAgent );\r\n\r\n this.root = document.createElement( 'div' );\r\n this.root.className = 'lexsidebar flex flex-col ' + ( options.className ?? '' );\r\n this.callback = options.callback ?? null;\r\n this._displaySelected = options.displaySelected ?? false;\r\n this.side = options.side ?? 'left';\r\n this.collapsable = options.collapsable ?? true;\r\n this._collapseWidth = ( options.collapseToIcons ?? true ) ? '58px' : '0px';\r\n this.collapsed = options.collapsed ?? mobile;\r\n this.filterString = '';\r\n\r\n LX.doAsync( () => {\r\n this.root.parentElement.ogWidth = this.root.parentElement.style.width;\r\n this.root.parentElement.style.transition = this.collapsed ? '' : 'width 0.25s ease-out';\r\n\r\n this.resizeObserver = new ResizeObserver( ( entries ) => {\r\n for ( const entry of entries )\r\n {\r\n this.siblingArea?.setSize( [ 'calc(100% - ' + ( entry.contentRect.width ) + 'px )', null ] );\r\n }\r\n } );\r\n\r\n if ( this.collapsed )\r\n {\r\n this.root.classList.toggle( 'collapsed', this.collapsed );\r\n this.root.parentElement.style.width = this._collapseWidth;\r\n\r\n if ( !this.resizeObserver )\r\n {\r\n throw ( 'Wait until ResizeObserver has been created!' );\r\n }\r\n\r\n this.resizeObserver.observe( this.root.parentElement );\r\n\r\n LX.doAsync( () => {\r\n this.resizeObserver?.unobserve( this.root.parentElement );\r\n this.root.querySelectorAll( '.lexsidebarentrycontent' ).forEach( ( e: HTMLElement ) =>\r\n e.dataset['disableTooltip'] = `${!this.collapsed}`\r\n );\r\n }, 10 );\r\n }\r\n }, 10 );\r\n\r\n // Header\r\n if ( !( options.skipHeader ?? false ) )\r\n {\r\n this.header = options.header ?? this._generateDefaultHeader( options );\r\n console.assert( this.header.constructor === HTMLDivElement,\r\n 'Use an HTMLDivElement to build your custom header' );\r\n this.header.className = 'lexsidebarheader flex-auto';\r\n this.root.appendChild( this.header );\r\n\r\n if ( this.collapsable )\r\n {\r\n const icon = LX.makeIcon( this.side == 'left' ? 'PanelLeft' : 'PanelRight', { title: 'Toggle Sidebar',\r\n iconClass: 'toggler' } );\r\n this.header.appendChild( icon );\r\n\r\n if ( mobile )\r\n {\r\n // create an area and append a sidebar:\r\n const area = new Area( { skipAppend: true } );\r\n const sheetSidebarOptions = LX.deepCopy( options );\r\n sheetSidebarOptions.collapsed = false;\r\n sheetSidebarOptions.collapsable = false;\r\n area.addSidebar( this.callback, sheetSidebarOptions );\r\n\r\n icon.addEventListener( 'click', ( e: MouseEvent ) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n new LX.Sheet( '256px', [ area ], { side: this.side } );\r\n } );\r\n }\r\n else\r\n {\r\n icon.addEventListener( 'click', ( e: MouseEvent ) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.toggleCollapsed();\r\n } );\r\n }\r\n }\r\n }\r\n\r\n // Entry filter\r\n if ( ( options.filter ?? false ) )\r\n {\r\n const filterTextInput = new TextInput( null, '', ( value: string, event: InputEvent ) => {\r\n this.filterString = value;\r\n this.update();\r\n }, { inputClass: 'outline', placeholder: 'Search...', icon: 'Search', className: 'lexsidebarfilter' } );\r\n this.filter = filterTextInput.root;\r\n this.root.appendChild( this.filter );\r\n }\r\n\r\n // Content\r\n {\r\n this.content = document.createElement( 'div' );\r\n this.content.className = 'lexsidebarcontent flex-auto-fill';\r\n this.root.appendChild( this.content );\r\n }\r\n\r\n // Footer\r\n if ( !( options.skipFooter ?? false ) )\r\n {\r\n this.footer = options.footer ?? this._generateDefaultFooter( options );\r\n console.assert( this.footer.constructor === HTMLDivElement,\r\n 'Use an HTMLDivElement to build your custom footer' );\r\n this.footer.className = 'lexsidebarfooter flex-auto';\r\n this.root.appendChild( this.footer );\r\n }\r\n }\r\n\r\n _generateDefaultHeader( options: any = {} )\r\n {\r\n const header = document.createElement( 'div' );\r\n\r\n header.addEventListener( 'click', ( e ) => {\r\n if ( this.collapsed )\r\n {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.toggleCollapsed();\r\n }\r\n else if ( options.onHeaderPressed )\r\n {\r\n options.onHeaderPressed( e );\r\n }\r\n } );\r\n\r\n const avatar = document.createElement( 'span' );\r\n avatar.className = 'lexavatar';\r\n header.appendChild( avatar );\r\n\r\n if ( options.headerImage )\r\n {\r\n const avatarImg = document.createElement( 'img' );\r\n avatarImg.src = options.headerImage;\r\n avatar.appendChild( avatarImg );\r\n }\r\n else if ( options.headerIcon )\r\n {\r\n const avatarIcon = LX.makeIcon( options.headerIcon );\r\n avatar.appendChild( avatarIcon );\r\n }\r\n\r\n // Info\r\n {\r\n const info = document.createElement( 'div' );\r\n info.className = 'infodefault';\r\n header.appendChild( info );\r\n\r\n const infoText = document.createElement( 'span' );\r\n infoText.innerHTML = options.headerTitle ?? '';\r\n info.appendChild( infoText );\r\n\r\n const infoSubtext = document.createElement( 'span' );\r\n infoSubtext.innerHTML = options.headerSubtitle ?? '';\r\n info.appendChild( infoSubtext );\r\n }\r\n\r\n // Add icon if onHeaderPressed is defined and not collapsable (it uses the toggler icon)\r\n if ( options.onHeaderPressed && !this.collapsable )\r\n {\r\n const icon = LX.makeIcon( 'MenuArrows' );\r\n header.appendChild( icon );\r\n }\r\n\r\n return header;\r\n }\r\n\r\n _generateDefaultFooter( options: any = {} )\r\n {\r\n const footer = document.createElement( 'div' );\r\n\r\n footer.addEventListener( 'click', ( e ) => {\r\n if ( options.onFooterPressed )\r\n {\r\n options.onFooterPressed( e, footer );\r\n }\r\n } );\r\n\r\n const avatar = document.createElement( 'span' );\r\n avatar.className = 'lexavatar';\r\n footer.appendChild( avatar );\r\n\r\n if ( options.footerImage )\r\n {\r\n const avatarImg = document.createElement( 'img' );\r\n avatarImg.src = options.footerImage;\r\n avatar.appendChild( avatarImg );\r\n }\r\n else if ( options.footerIcon )\r\n {\r\n const avatarIcon = LX.makeIcon( options.footerIcon );\r\n avatar.appendChild( avatarIcon );\r\n }\r\n\r\n // Info\r\n {\r\n const info = document.createElement( 'div' );\r\n info.className = 'infodefault';\r\n footer.appendChild( info );\r\n\r\n const infoText = document.createElement( 'span' );\r\n infoText.innerHTML = options.footerTitle ?? '';\r\n info.appendChild( infoText );\r\n\r\n const infoSubtext = document.createElement( 'span' );\r\n infoSubtext.innerHTML = options.footerSubtitle ?? '';\r\n info.appendChild( infoSubtext );\r\n }\r\n\r\n // Add icon if onFooterPressed is defined\r\n // Useful to indicate that the footer is clickable\r\n if ( options.onFooterPressed )\r\n {\r\n const icon = LX.makeIcon( 'MenuArrows' );\r\n footer.appendChild( icon );\r\n }\r\n\r\n return footer;\r\n }\r\n\r\n /**\r\n * @method toggleCollapsed\r\n * @param {Boolean} force: Force collapsed state\r\n */\r\n\r\n toggleCollapsed( force?: boolean )\r\n {\r\n if ( !this.collapsable )\r\n {\r\n return;\r\n }\r\n\r\n this.collapsed = force ?? !this.collapsed;\r\n\r\n if ( this.collapsed )\r\n {\r\n this.root.classList.add( 'collapsing' );\r\n this.root.parentElement.style.width = this._collapseWidth;\r\n }\r\n else\r\n {\r\n this.root.classList.remove( 'collapsing' );\r\n this.root.classList.remove( 'collapsed' );\r\n this.root.parentElement.style.width = this.root.parentElement.ogWidth;\r\n }\r\n\r\n if ( !this.resizeObserver )\r\n {\r\n throw ( 'Wait until ResizeObserver has been created!' );\r\n }\r\n\r\n this.resizeObserver.observe( this.root.parentElement );\r\n\r\n LX.doAsync( () => {\r\n this.root.classList.toggle( 'collapsed', this.collapsed );\r\n this.resizeObserver?.unobserve( this.root.parentElement );\r\n this.root.querySelectorAll( '.lexsidebarentrycontent' ).forEach( ( e: HTMLElement ) =>\r\n e.dataset['disableTooltip'] = `${!this.collapsed}`\r\n );\r\n }, 250 );\r\n }\r\n\r\n /**\r\n * @method separator\r\n */\r\n\r\n separator()\r\n {\r\n this.currentGroup = null;\r\n\r\n this.add( '' );\r\n }\r\n\r\n /**\r\n * @method group\r\n * @param {String} groupName\r\n * @param {Object} action: { icon, callback }\r\n */\r\n\r\n group( groupName: string, action: any )\r\n {\r\n this.currentGroup = groupName;\r\n\r\n this.groups[groupName] = action;\r\n }\r\n\r\n /**\r\n * @method add\r\n * @param {String} path\r\n * @param {Object} options:\r\n * callback: Function to call on each item\r\n * className: Add class to the entry DOM element\r\n * collapsable: Add entry as a collapsable section\r\n * icon: Entry icon\r\n */\r\n\r\n add( path: string, options: any = {} )\r\n {\r\n if ( options.constructor == Function )\r\n {\r\n options = { callback: options };\r\n }\r\n\r\n // Process path\r\n const tokens = path.split( '/' );\r\n\r\n // Assign icons and shortcuts to last token in path\r\n const lastPath = tokens[tokens.length - 1];\r\n this.icons[lastPath] = options.icon;\r\n\r\n let idx = 0;\r\n\r\n const _insertEntry = ( token: string, list: any[] ) => {\r\n if ( token == undefined )\r\n {\r\n return;\r\n }\r\n\r\n let found = null;\r\n list.forEach( ( o: any ) => {\r\n const keys = Object.keys( o );\r\n const key = keys.find( ( t ) => t == token );\r\n if ( key ) found = o[key];\r\n } );\r\n\r\n if ( found )\r\n {\r\n _insertEntry( tokens[idx++], found );\r\n }\r\n else\r\n {\r\n let item: Record<string, any> = {};\r\n item[token] = [];\r\n const nextToken = tokens[idx++];\r\n // Check if last token -> add callback\r\n if ( !nextToken )\r\n {\r\n item['callback'] = options.callback;\r\n item['group'] = this.currentGroup;\r\n item['options'] = options;\r\n }\r\n list.push( item );\r\n _insertEntry( nextToken, item[token] );\r\n }\r\n };\r\n\r\n _insertEntry( tokens[idx++], this.items );\r\n }\r\n\r\n /**\r\n * @method select\r\n * @param {String} name Element name to select\r\n */\r\n\r\n select( name: string )\r\n {\r\n let pKey = LX.getSupportedDOMName( name );\r\n\r\n const entry = this.items.find( ( v ) => v.name === pKey );\r\n\r\n if ( !entry )\r\n {\r\n return;\r\n }\r\n\r\n entry.dom.click();\r\n }\r\n\r\n update()\r\n {\r\n // Reset first\r\n\r\n this.content.innerHTML = '';\r\n\r\n for ( let item of this.items )\r\n {\r\n delete item.dom;\r\n }\r\n\r\n for ( let item of this.items )\r\n {\r\n const options = item.options ?? {};\r\n\r\n // Item already created\r\n if ( item.dom )\r\n {\r\n continue;\r\n }\r\n\r\n let key = item.name = Object.keys( item )[0];\r\n\r\n if ( this.filterString.length && !key.toLowerCase().includes( this.filterString.toLowerCase() ) )\r\n {\r\n continue;\r\n }\r\n\r\n let pKey = LX.getSupportedDOMName( key );\r\n let currentGroup = null;\r\n\r\n let entry = document.createElement( 'div' );\r\n entry.id = pKey;\r\n entry.className = 'lexsidebarentry ' + ( options.className ?? '' );\r\n\r\n if ( this.displaySelected && options.selected )\r\n {\r\n entry.classList.add( 'selected' );\r\n }\r\n\r\n if ( item.group )\r\n {\r\n const pGroupKey = item.group.replace( /\\s/g, '' ).replaceAll( '.', '' );\r\n currentGroup = this.content.querySelector( '#' + pGroupKey );\r\n\r\n if ( !currentGroup )\r\n {\r\n currentGroup = document.createElement( 'div' );\r\n currentGroup.id = pGroupKey;\r\n currentGroup.className = 'lexsidebargroup';\r\n this.content.appendChild( currentGroup );\r\n\r\n let groupEntry = document.createElement( 'div' );\r\n groupEntry.className = 'lexsidebargrouptitle';\r\n currentGroup.appendChild( groupEntry );\r\n\r\n let groupLabel = document.createElement( 'div' );\r\n groupLabel.innerHTML = item.group;\r\n groupEntry.appendChild( groupLabel );\r\n\r\n if ( this.groups[item.group] != null )\r\n {\r\n const groupActionIcon = LX.makeIcon( this.groups[item.group].icon, { svgClass: 'sm' } );\r\n groupEntry.appendChild( groupActionIcon );\r\n groupActionIcon.addEventListener( 'click', ( e: MouseEvent ) => {\r\n if ( this.groups[item.group].callback )\r\n {\r\n this.groups[item.group].callback( item.group, e );\r\n }\r\n } );\r\n }\r\n }\r\n else if ( !currentGroup.classList.contains( 'lexsidebargroup' ) )\r\n {\r\n throw ( 'Bad id: ' + item.group );\r\n }\r\n }\r\n\r\n if ( pKey == '' )\r\n {\r\n let separatorDom = document.createElement( 'div' );\r\n separatorDom.className = 'lexsidebarseparator';\r\n this.content.appendChild( separatorDom );\r\n continue;\r\n }\r\n\r\n if ( this.collapseContainer )\r\n {\r\n this.collapseContainer.appendChild( entry );\r\n\r\n this.collapseQueue--;\r\n if ( !this.collapseQueue )\r\n {\r\n delete this.collapseContainer;\r\n }\r\n }\r\n else if ( currentGroup )\r\n {\r\n currentGroup.appendChild( entry );\r\n }\r\n else\r\n {\r\n this.content.appendChild( entry );\r\n }\r\n\r\n let itemDom = document.createElement( 'div' );\r\n itemDom.className = 'lexsidebarentrycontent';\r\n entry.appendChild( itemDom );\r\n item.dom = entry;\r\n\r\n if ( options.type == 'checkbox' )\r\n {\r\n item.value = options.value ?? false;\r\n const panel = new Panel();\r\n item.checkbox = panel.addCheckbox( null, item.value, ( value: boolean, event: InputEvent ) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n const f = options.callback;\r\n item.value = value;\r\n if ( f ) f.call( this, key, value, event );\r\n }, { className: 'accent', label: key, signal: ( '@checkbox_' + key ) } );\r\n itemDom.appendChild( panel.root.childNodes[0] );\r\n }\r\n else\r\n {\r\n if ( options.icon )\r\n {\r\n const itemIcon = LX.makeIcon( options.icon, { iconClass: 'lexsidebarentryicon' } );\r\n itemDom.appendChild( itemIcon );\r\n LX.asTooltip( itemDom, key, { side: 'right', offset: 16, active: false } );\r\n }\r\n\r\n let itemName = LX.makeElement( 'a', 'grid-column-start-2', key, itemDom );\r\n\r\n if ( options.swap )\r\n {\r\n itemDom.classList.add( 'swap', 'inline-grid' );\r\n itemDom.querySelector( 'a' )?.classList.add( 'swap-off' );\r\n\r\n const input = document.createElement( 'input' );\r\n input.className = 'p-0 border-0';\r\n input.type = 'checkbox';\r\n itemDom.prepend( input );\r\n\r\n const swapIcon = LX.makeIcon( options.swap, { iconClass: 'lexsidebarentryicon swap-on' } );\r\n itemDom.appendChild( swapIcon );\r\n }\r\n\r\n if ( options.content )\r\n {\r\n itemDom.appendChild( options.content );\r\n }\r\n }\r\n\r\n const isCollapsable = options.collapsable != undefined\r\n ? options.collapsable\r\n : ( options.collapsable || item[key].length );\r\n\r\n entry.addEventListener( 'click', ( e: any ) => {\r\n if ( e.target && e.target.classList.contains( 'lexcheckbox' ) )\r\n {\r\n return;\r\n }\r\n\r\n let value = undefined;\r\n\r\n if ( isCollapsable )\r\n {\r\n ( itemDom.querySelector( '.collapser' ) as any )?.click();\r\n }\r\n else if ( item.checkbox )\r\n {\r\n item.value = !item.value;\r\n item.checkbox.set( item.value, true );\r\n value = item.value;\r\n }\r\n else if ( options.swap && !( e.target instanceof HTMLInputElement ) )\r\n {\r\n const swapInput: any = itemDom.querySelector( 'input' );\r\n swapInput.checked = !swapInput.checked;\r\n value = swapInput.checked;\r\n }\r\n\r\n const f = options.callback;\r\n if ( f ) f.call( this, key, value ?? entry, e );\r\n\r\n // Manage selected\r\n if ( this.displaySelected && !options.skipSelection )\r\n {\r\n this.root.querySelectorAll( '.lexsidebarentry' ).forEach( ( e: HTMLElement ) =>\r\n e.classList.remove( 'selected' )\r\n );\r\n entry.classList.add( 'selected' );\r\n }\r\n } );\r\n\r\n if ( options.action )\r\n {\r\n const actionIcon = LX.makeIcon( options.action.icon ?? 'Ellipsis', { title: options.action.name } );\r\n itemDom.appendChild( actionIcon );\r\n\r\n actionIcon.addEventListener( 'click', ( e: MouseEvent ) => {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n const f = options.action.callback;\r\n if ( f ) f.call( this, key, e );\r\n } );\r\n }\r\n else if ( isCollapsable )\r\n {\r\n const collapsableContent = document.createElement( 'div' );\r\n collapsableContent.className = 'collapsablecontainer';\r\n Object.assign( collapsableContent.style, { width: '100%', display: 'none' } );\r\n LX.makeCollapsible( itemDom, collapsableContent, currentGroup ?? this.content );\r\n this.collapseQueue = options.collapsable;\r\n this.collapseContainer = collapsableContent;\r\n }\r\n\r\n // Subentries\r\n if ( !item[key].length )\r\n {\r\n continue;\r\n }\r\n\r\n let subentryContainer = document.createElement( 'div' );\r\n subentryContainer.className = 'lexsidebarsubentrycontainer';\r\n\r\n if ( isCollapsable )\r\n {\r\n this.collapseContainer.appendChild( subentryContainer );\r\n delete this.collapseContainer;\r\n }\r\n else if ( currentGroup )\r\n {\r\n subentryContainer.classList.add( 'collapsablecontainer' );\r\n currentGroup.appendChild( subentryContainer );\r\n }\r\n else\r\n {\r\n this.content.appendChild( subentryContainer );\r\n }\r\n\r\n for ( let i = 0; i < item[key].length; ++i )\r\n {\r\n const subitem = item[key][i];\r\n const suboptions = subitem.options ?? {};\r\n const subkey = subitem.name = Object.keys( subitem )[0];\r\n\r\n if ( this.filterString.length && !subkey.toLowerCase().includes( this.filterString.toLowerCase() ) )\r\n {\r\n continue;\r\n }\r\n\r\n let subentry = document.createElement( 'div' );\r\n subentry.innerHTML = `<span>${subkey}</span>`;\r\n\r\n if ( suboptions.action )\r\n {\r\n const actionIcon = LX.makeIcon( suboptions.action.icon ?? 'Ellipsis', {\r\n title: suboptions.action.name\r\n } );\r\n subentry.appendChild( actionIcon );\r\n\r\n actionIcon.addEventListener( 'click', ( e: MouseEvent ) => {\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n const f = suboptions.action.callback;\r\n if ( f ) f.call( this, subkey, e );\r\n } );\r\n }\r\n\r\n subentry.className = 'lexsidebarentry';\r\n subentry.id = subkey;\r\n\r\n if ( suboptions.content )\r\n {\r\n const parentContainer = LX.makeElement( 'div' );\r\n parentContainer.appendChild( suboptions.content );\r\n subentry.appendChild( parentContainer );\r\n }\r\n\r\n subentryContainer.appendChild( subentry );\r\n\r\n subentry.addEventListener( 'click', ( e: MouseEvent ) => {\r\n const f = suboptions.callback;\r\n if ( f ) f.call( this, subkey, subentry, e );\r\n\r\n // Manage selected\r\n if ( this.displaySelected && !suboptions.skipSelection )\r\n {\r\n this.root.querySelectorAll( '.lexsidebarentry' ).forEach( ( e: HTMLElement ) =>\r\n e.classList.remove( 'selected' )\r\n );\r\n subentry.classList.add( 'selected' );\r\n }\r\n } );\r\n }\r\n }\r\n }\r\n}\r\n\r\nLX.Sidebar = Sidebar;\r\n","// Skeleton.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\n\r\nexport class Skeleton\r\n{\r\n root: any;\r\n\r\n constructor( elements: any[] )\r\n {\r\n this.root = LX.makeContainer( [ 'auto', 'auto' ], 'flex flex-row lexskeleton' );\r\n\r\n if ( elements.constructor === String )\r\n {\r\n this.root.innerHTML = elements;\r\n }\r\n else\r\n {\r\n // Force array\r\n elements = [].concat( elements as any );\r\n\r\n for ( let e of elements )\r\n {\r\n this.root.appendChild( e );\r\n }\r\n }\r\n }\r\n\r\n destroy()\r\n {\r\n this.root.dataset['closed'] = true;\r\n\r\n LX.doAsync( () => {\r\n this.root.remove();\r\n this.root = null;\r\n }, 200 );\r\n }\r\n}\r\n\r\nLX.Skeleton = Skeleton;\r\n","// Tour.ts @jxarco\r\n\r\nimport { LX } from './../core/Namespace';\r\nimport { Panel } from '../core/Panel';\r\nimport { Popover } from './Popover';\r\n\r\nexport class Tour\r\n{\r\n static ACTIVE_TOURS: any[] = [];\r\n\r\n /**\r\n * @constructor Tour\r\n * @param {Array} steps\r\n * @param {Object} options\r\n * useModal: Use a modal to highlight the tour step [true]\r\n * offset: Horizontal and vertical margin offset [0]\r\n * horizontalOffset: Horizontal offset [0]\r\n * verticalOffset: Vertical offset [0]\r\n * radius: Radius for the tour step highlight [8]\r\n */\r\n\r\n steps: any[];\r\n currentStep: number = 0;\r\n useModal: boolean;\r\n offset: number;\r\n horizontalOffset: number;\r\n verticalOffset: number;\r\n radius: number;\r\n tourContainer: any;\r\n tourMask: HTMLElement | undefined = undefined;\r\n\r\n _popover: Popover | null = null;\r\n\r\n constructor( steps: any[], options: any = {} )\r\n {\r\n this.steps = steps || [];\r\n\r\n this.useModal = options.useModal ?? true;\r\n this.offset = options.offset ?? 8;\r\n this.horizontalOffset = options.horizontalOffset;\r\n this.verticalOffset = options.verticalOffset;\r\n this.radius = options.radius ?? 12;\r\n\r\n this.tourContainer = document.querySelector( '.tour-container' );\r\n if ( !this.tourContainer )\r\n {\r\n this.tourContainer = LX.makeContainer( [ '100%', '100%' ], 'tour-container' );\r\n this.tourContainer.style.display = 'none';\r\n document.body.appendChild( this.tourContainer );\r\n\r\n window.addEventListener( 'resize', () => {\r\n for ( const tour of Tour.ACTIVE_TOURS )\r\n {\r\n tour._showStep( 0 );\r\n }\r\n } );\r\n }\r\n }\r\n\r\n /**\r\n * @method begin\r\n */\r\n\r\n begin()\r\n {\r\n this.currentStep = 0;\r\n this.tourContainer.style.display = 'block';\r\n Tour.ACTIVE_TOURS.push( this );\r\n this._showStep( 0 );\r\n }\r\n\r\n /**\r\n * @method stop\r\n */\r\n\r\n stop()\r\n {\r\n if ( this.useModal )\r\n {\r\n this.tourMask?.remove();\r\n this.tourMask = undefined;\r\n }\r\n\r\n this._popover?.destroy();\r\n\r\n const index = Tour.ACTIVE_TOURS.indexOf( this );\r\n if ( index !== -1 )\r\n {\r\n Tour.ACTIVE_TOURS.splice( index, 1 );\r\n }\r\n\r\n this.tourContainer.innerHTML = '';\r\n this.tourContainer.style.display = 'none';\r\n }\r\n\r\n // Show the current step of the tour\r\n _showStep( stepOffset = 1 )\r\n {\r\n this.currentStep += stepOffset;\r\n\r\n const step = this.steps[this.currentStep];\r\n if ( !step )\r\n {\r\n this.stop();\r\n return;\r\n }\r\n\r\n const prevStep = this.steps[this.currentStep - 1];\r\n const nextStep = this.steps[this.currentStep + 1];\r\n\r\n if ( this.useModal )\r\n {\r\n this._generateMask( step.reference );\r\n }\r\n\r\n this._createHighlight( step, prevStep, nextStep );\r\n }\r\n\r\n // Generate mask for the specific step reference\r\n // using a fullscreen SVG with \"rect\" elements\r\n _generateMask( reference: HTMLElement )\r\n {\r\n this.tourContainer.innerHTML = ''; // Clear previous content\r\n\r\n this.tourMask = LX.makeContainer( [ '100%', '100%' ], 'tour-mask' );\r\n this.tourContainer.appendChild( this.tourMask );\r\n\r\n const svg = document.createElementNS( 'http://www.w3.org/2000/svg', 'svg' );\r\n svg.style.width = '100%';\r\n svg.style.height = '100%';\r\n this.tourMask?.appendChild( svg );\r\n\r\n const clipPath = document.createElementNS( 'http://www.w3.org/2000/svg', 'clipPath' );\r\n clipPath.setAttribute( 'id', 'svgTourClipPath' );\r\n svg.appendChild( clipPath );\r\n\r\n function ceilAndShiftRect( p: number, s: number ): [ number, number ]\r\n {\r\n const cp = Math.ceil( p );\r\n const delta = cp - p;\r\n const ds = s - delta;\r\n return [ cp, ds ];\r\n }\r\n\r\n const refBounding = reference.getBoundingClientRect();\r\n const [ boundingX, boundingWidth ] = ceilAndShiftRect( refBounding.x, refBounding.width );\r\n const [ boundingY, boundingHeight ] = ceilAndShiftRect( refBounding.y, refBounding.height );\r\n\r\n const vOffset = this.verticalOffset ?? this.offset;\r\n const hOffset = this.horizontalOffset ?? this.offset;\r\n\r\n // Left\r\n {\r\n const rect = document.createElementNS( 'http://www.w3.org/2000/svg', 'rect' );\r\n rect.setAttribute( 'x', '0' );\r\n rect.setAttribute( 'y', '0' );\r\n rect.setAttribute( 'width', `${Math.max( 0, boundingX - hOffset )}` );\r\n rect.setAttribute( 'height', `${window.innerHeight}` );\r\n rect.setAttribute( 'stroke', 'none' );\r\n clipPath.appendChild( rect );\r\n }\r\n\r\n // Top\r\n {\r\n const rect = document.createElementNS( 'http://www.w3.org/2000/svg', 'rect' );\r\n rect.setAttribute( 'x', `${boundingX - hOffset}` );\r\n rect.setAttribute( 'y', '0' );\r\n rect.setAttribute( 'width', `${Math.max( 0, boundingWidth + hOffset * 2 )}` );\r\n rect.setAttribute( 'height', `${Math.max( 0, boundingY - vOffset )}` );\r\n rect.setAttribute( 'stroke', 'none' );\r\n clipPath.appendChild( rect );\r\n }\r\n\r\n // Bottom\r\n {\r\n const rect = document.createElementNS( 'http://www.w3.org/2000/svg', 'rect' );\r\n rect.setAttribute( 'x', `${boundingX - hOffset}` );\r\n rect.setAttribute( 'y', `${boundingY + boundingHeight + vOffset}` );\r\n rect.setAttribute( 'width', `${Math.max( 0, boundingWidth + hOffset * 2 )}` );\r\n rect.setAttribute( 'height',\r\n `${Math.max( 0, window.innerHeight - boundingY - boundingHeight - vOffset )}` );\r\n rect.setAttribute( 'stroke', 'none' );\r\n clipPath.appendChild( rect );\r\n }\r\n\r\n // Right\r\n {\r\n const rect = document.createElementNS( 'http://www.w3.org/2000/svg', 'rect' );\r\n rect.setAttribute( 'x', `${boundingX + boundingWidth + hOffset}` );\r\n rect.setAttribute( 'y', '0' );\r\n rect.setAttribute( 'width', `${Math.max( 0, window.innerWidth - boundingX - boundingWidth )}` );\r\n rect.setAttribute( 'height', `${Math.max( 0, window.innerHeight )}` );\r\n rect.setAttribute( 'stroke', 'none' );\r\n clipPath.appendChild( rect );\r\n }\r\n\r\n // Reference Highlight\r\n const refContainer = LX.makeContainer( [ '0', '0' ], 'tour-ref-mask' );\r\n refContainer.style.left = `${boundingX - hOffset - 1}px`;\r\n refContainer.style.top = `${boundingY - vOffset - 1}px`;\r\n refContainer.style.width = `${boundingWidth + hOffset * 2 + 2}px`;\r\n refContainer.style.height = `${boundingHeight + vOffset * 2 + 2}px`;\r\n this.tourContainer.appendChild( refContainer );\r\n\r\n const referenceMask = document.createElementNS( 'http://www.w3.org/2000/svg', 'mask' );\r\n referenceMask.setAttribute( 'id', 'svgTourReferenceMask' );\r\n svg.appendChild( referenceMask );\r\n\r\n // Reference Mask\r\n {\r\n const rectWhite = document.createElementNS( 'http://www.w3.org/2000/svg', 'rect' );\r\n rectWhite.setAttribute( 'width', `${boundingWidth + hOffset * 2 + 2}` );\r\n rectWhite.setAttribute( 'height', `${boundingHeight + vOffset * 2 + 2}` );\r\n rectWhite.setAttribute( 'stroke', 'none' );\r\n rectWhite.setAttribute( 'fill', 'white' );\r\n referenceMask.appendChild( rectWhite );\r\n\r\n const rectBlack = document.createElementNS( 'http://www.w3.org/2000/svg', 'rect' );\r\n rectBlack.setAttribute( 'rx', `${this.radius}` );\r\n rectBlack.setAttribute( 'width', `${boundingWidth + hOffset * 2 + 2}` );\r\n rectBlack.setAttribute( 'height', `${boundingHeight + vOffset * 2 + 2}` );\r\n rectBlack.setAttribute( 'stroke', 'none' );\r\n rectBlack.setAttribute( 'fill', 'black' );\r\n referenceMask.appendChild( rectBlack );\r\n }\r\n }\r\n\r\n // Create the container with the user hints\r\n _createHighlight( step: any, previousStep: any, nextStep: any )\r\n {\r\n const popoverContainer = LX.makeContainer( [ 'auto', 'auto' ], 'tour-step-container' );\r\n\r\n {\r\n const header = LX.makeContainer( [ '100%', 'auto' ], 'flex flex-row', '', popoverContainer );\r\n const title = LX.makeContainer( [ '70%', 'auto' ], 'p-2 font-medium', step.title, header );\r\n const closer = LX.makeContainer( [ '30%', 'auto' ], 'flex flex-row p-2 justify-end', '', header );\r\n const closeIcon = LX.makeIcon( 'X' );\r\n closer.appendChild( closeIcon );\r\n\r\n LX.listen( closeIcon, 'click', () => {\r\n this.stop();\r\n } );\r\n }\r\n\r\n const content = LX.makeContainer( [ '100%', 'auto' ], 'p-2 text-md', step.content, popoverContainer, {\r\n maxWidth: '400px'\r\n } );\r\n const footer = LX.makeContainer( [ '100%', 'auto' ], 'flex flex-row text-md', '', popoverContainer );\r\n\r\n {\r\n const footerSteps = LX.makeContainer( [ '50%', 'auto' ], 'p-2 gap-1 self-center flex flex-row text-md', '',\r\n footer );\r\n for ( let i = 0; i < this.steps.length; i++ )\r\n {\r\n const stepIndicator = document.createElement( 'span' );\r\n stepIndicator.className = 'tour-step-indicator';\r\n if ( i === this.currentStep )\r\n {\r\n stepIndicator.classList.add( 'active' );\r\n }\r\n footerSteps.appendChild( stepIndicator );\r\n }\r\n }\r\n\r\n const footerButtons = LX.makeContainer( [ '50%', 'auto' ], 'text-md', '', footer );\r\n const footerPanel = new Panel();\r\n\r\n let numButtons = 1;\r\n\r\n if ( previousStep )\r\n {\r\n numButtons++;\r\n }\r\n\r\n if ( numButtons > 1 )\r\n {\r\n footerPanel.sameLine( 2, 'justify-end' );\r\n }\r\n\r\n if ( previousStep )\r\n {\r\n footerPanel.addButton( null, 'Previous', () => {\r\n this._showStep( -1 );\r\n }, { buttonClass: 'contrast' } );\r\n }\r\n\r\n if ( nextStep )\r\n {\r\n footerPanel.addButton( null, 'Next', () => {\r\n this._showStep( 1 );\r\n }, { buttonClass: 'accent' } );\r\n }\r\n else\r\n {\r\n footerPanel.addButton( null, 'Finish', () => {\r\n this.stop();\r\n } );\r\n }\r\n\r\n footerButtons.appendChild( footerPanel.root );\r\n\r\n const sideOffset =\r\n ( step.side === 'left' || step.side === 'right' ? this.horizontalOffset : this.verticalOffset )\r\n ?? this.offset;\r\n const alignOffset = step.align === 'start' || step.align === 'end' ? sideOffset : 0;\r\n\r\n this._popover?.destroy();\r\n this._popover = new Popover( null, [ popoverContainer ], {\r\n reference: step.reference,\r\n side: step.side,\r\n align: step.align,\r\n sideOffset,\r\n alignOffset: step.align === 'start' ? -alignOffset : alignOffset\r\n } );\r\n }\r\n}\r\n\r\nLX.Tour = Tour;\r\n","// Core.ts @jxarco\r\n\r\nimport { BaseComponent, ComponentType } from '../components/BaseComponent';\r\nimport { ContextMenu } from '../components/ContextMenu';\r\nimport { TextInput } from '../components/TextInput';\r\nimport { Area } from './Area';\r\nimport { IEvent } from './Event';\r\nimport { LX } from './Namespace';\r\nimport { Panel } from './Panel';\r\n\r\n/**\r\n * @method init\r\n * @param {Object} options\r\n * autoTheme: Use theme depending on browser-system default theme [true]\r\n * container: Root location for the gui (default is the document body)\r\n * id: Id of the main area\r\n * rootClass: Extra class to the root container\r\n * skipRoot: Skip adding LX root container\r\n * skipDefaultArea: Skip creation of main area\r\n * layoutMode: Sets page layout mode (document | app)\r\n * spacingMode: Sets page layout spacing mode (default | compact)\r\n */\r\n\r\nLX.init = async function( options: any = {} )\r\n{\r\n if ( this.ready )\r\n {\r\n return this.mainArea;\r\n }\r\n\r\n await LX.loadScriptSync( 'https://unpkg.com/lucide@latest' );\r\n\r\n // LexGUI root\r\n console.log( `LexGUI v${this.version}` );\r\n\r\n var root = document.createElement( 'div' );\r\n root.id = 'lexroot';\r\n root.className = 'lexcontainer';\r\n root.tabIndex = -1;\r\n\r\n if ( options.rootClass )\r\n {\r\n root.className += ` ${options.rootClass}`;\r\n }\r\n\r\n this.modal = document.createElement( 'div' );\r\n this.modal.id = 'modal';\r\n this.modal.classList.add( 'hidden-opacity' );\r\n this.modal.toggle = function( force: boolean )\r\n {\r\n this.classList.toggle( 'hidden-opacity', force );\r\n };\r\n\r\n this.root = root;\r\n this.container = document.body;\r\n\r\n if ( options.container )\r\n {\r\n this.container = options.container.constructor === String\r\n ? document.getElementById( options.container )\r\n : options.container;\r\n }\r\n\r\n this.layoutMode = options.layoutMode ?? 'app';\r\n document.documentElement.setAttribute( 'data-layout', this.layoutMode );\r\n\r\n if ( this.layoutMode == 'document' )\r\n {\r\n // document.addEventListener( \"scroll\", e => {\r\n // // Get all active menuboxes\r\n // const mbs = document.body.querySelectorAll( \".lexdropdownmenu\" );\r\n // mbs.forEach( ( mb: any ) => {\r\n // mb._updatePosition();\r\n // } );\r\n // } );\r\n }\r\n\r\n this.spacingMode = options.spacingMode ?? 'default';\r\n document.documentElement.setAttribute( 'data-spacing', this.spacingMode );\r\n\r\n this.container.appendChild( this.modal );\r\n\r\n if ( !options.skipRoot )\r\n {\r\n this.container.appendChild( root );\r\n }\r\n else\r\n {\r\n this.root = document.body;\r\n }\r\n\r\n // Notifications\r\n {\r\n const notifSection = document.createElement( 'section' );\r\n notifSection.className = 'notifications';\r\n this.notifications = document.createElement( 'ol' );\r\n this.notifications.className = '';\r\n this.notifications.iWidth = 0;\r\n notifSection.appendChild( this.notifications );\r\n document.body.appendChild( notifSection );\r\n\r\n this.notifications.addEventListener( 'mouseenter', () => {\r\n this.notifications.classList.add( 'list' );\r\n } );\r\n\r\n this.notifications.addEventListener( 'mouseleave', () => {\r\n this.notifications.classList.remove( 'list' );\r\n } );\r\n }\r\n\r\n // Disable drag icon\r\n root.addEventListener( 'dragover', function( e )\r\n {\r\n e.preventDefault();\r\n }, false );\r\n\r\n document.addEventListener( 'contextmenu', function( e )\r\n {\r\n e.preventDefault();\r\n }, false );\r\n\r\n // Global vars\r\n this.DEFAULT_NAME_WIDTH = '30%';\r\n this.DEFAULT_SPLITBAR_SIZE = 4;\r\n this.OPEN_CONTEXTMENU_ENTRY = 'click';\r\n\r\n this.componentResizeObserver = new ResizeObserver( ( entries ) => {\r\n for ( const entry of entries )\r\n {\r\n const c = ( entry.target as any )?.jsInstance;\r\n if ( c && c.onResize )\r\n {\r\n c.onResize( entry.contentRect );\r\n }\r\n }\r\n } );\r\n\r\n this.ready = true;\r\n this.menubars = [];\r\n this.sidebars = [];\r\n this.commandbar = this._createCommandbar( this.container );\r\n\r\n if ( !options.skipRoot && !options.skipDefaultArea )\r\n {\r\n this.mainArea = new Area( { id: options.id ?? 'mainarea' } );\r\n }\r\n\r\n // Initial or automatic changes don't force color scheme\r\n // to be stored in localStorage\r\n\r\n this._onChangeSystemTheme = function( event: any )\r\n {\r\n const storedcolorScheme = localStorage.getItem( 'lxColorScheme' );\r\n if ( storedcolorScheme ) return;\r\n LX.setTheme( event.matches ? 'dark' : 'light', false );\r\n };\r\n\r\n this._mqlPrefersDarkScheme = window.matchMedia ? window.matchMedia( '(prefers-color-scheme: dark)' ) : null;\r\n\r\n const storedcolorScheme = localStorage.getItem( 'lxColorScheme' );\r\n if ( storedcolorScheme )\r\n {\r\n LX.setTheme( storedcolorScheme );\r\n }\r\n else if ( this._mqlPrefersDarkScheme && ( options.autoTheme ?? true ) )\r\n {\r\n if ( window.matchMedia( '(prefers-color-scheme: light)' ).matches )\r\n {\r\n LX.setTheme( 'light', false );\r\n }\r\n\r\n this._mqlPrefersDarkScheme.addEventListener( 'change', this._onChangeSystemTheme );\r\n }\r\n\r\n return this.mainArea;\r\n}, /**\r\n * @method setSpacingMode\r\n * @param {String} mode: \"default\" | \"compact\"\r\n */ LX.setSpacingMode = function( mode: string )\r\n{\r\n this.spacingMode = mode;\r\n document.documentElement.setAttribute( 'data-spacing', this.spacingMode );\r\n}, /**\r\n * @method setLayoutMode\r\n * @param {String} mode: \"app\" | \"document\"\r\n */ LX.setLayoutMode = function( mode: string )\r\n{\r\n this.layoutMode = mode;\r\n document.documentElement.setAttribute( 'data-layout', this.layoutMode );\r\n}, /**\r\n * @method addSignal\r\n * @param {String} name\r\n * @param {Object} obj\r\n * @param {Function} callback\r\n */ LX.addSignal = function( name: string, obj: any, callback: ( value: any ) => void )\r\n{\r\n obj[name] = callback;\r\n\r\n if ( !LX.signals[name] )\r\n {\r\n LX.signals[name] = [];\r\n }\r\n\r\n if ( LX.signals[name].indexOf( obj ) > -1 )\r\n {\r\n return;\r\n }\r\n\r\n LX.signals[name].push( obj );\r\n}, /**\r\n * @method emitSignal\r\n * @param {String} name\r\n * @param {*} value\r\n * @param {Object} options\r\n */ LX.emitSignal = function( name: string, value: any, options: Record<string, any> = {} )\r\n{\r\n const data = LX.signals[name];\r\n\r\n if ( !data )\r\n {\r\n return;\r\n }\r\n\r\n const target = options.target;\r\n\r\n if ( target )\r\n {\r\n if ( target[name] )\r\n {\r\n target[name].call( target, value );\r\n }\r\n\r\n return;\r\n }\r\n\r\n for ( let obj of data )\r\n {\r\n if ( obj instanceof BaseComponent )\r\n {\r\n obj.set( value, options.skipCallback ?? true );\r\n }\r\n else if ( obj.constructor === Function )\r\n {\r\n const fn = obj;\r\n fn( null, value );\r\n }\r\n else\r\n {\r\n // This is an element\r\n const fn = obj[name];\r\n console.assert( fn, `No callback registered with _${name}_ signal` );\r\n fn.bind( obj )( value );\r\n }\r\n }\r\n};\r\n\r\n// Command bar creation\r\n\r\nLX._createCommandbar = function( root: any )\r\n{\r\n let commandbar: any = document.createElement( 'dialog' );\r\n commandbar.className = 'commandbar';\r\n commandbar.tabIndex = -1;\r\n root.appendChild( commandbar );\r\n\r\n let allItems: string[] = [];\r\n let hoverElId: number | null = null;\r\n\r\n commandbar.addEventListener( 'keydown', function( e: KeyboardEvent )\r\n {\r\n e.stopPropagation();\r\n e.stopImmediatePropagation();\r\n hoverElId = hoverElId ?? -1;\r\n if ( e.key == 'Escape' )\r\n {\r\n commandbar.close();\r\n _resetBar( true );\r\n }\r\n else if ( e.key == 'Enter' )\r\n {\r\n const el = allItems[hoverElId] as any;\r\n if ( el )\r\n {\r\n if ( el.item.checked != undefined )\r\n {\r\n el.item.checked = !el.item.checked;\r\n }\r\n\r\n commandbar.close();\r\n\r\n el.callback.call( window, el.item.name, el.item.checked );\r\n }\r\n }\r\n else if ( e.key == 'ArrowDown' && hoverElId < ( allItems.length - 1 ) )\r\n {\r\n hoverElId++;\r\n commandbar.querySelectorAll( '.hovered' ).forEach( ( e: HTMLElement ) => e.classList.remove( 'hovered' ) );\r\n const el = allItems[hoverElId] as any;\r\n el.classList.add( 'hovered' );\r\n\r\n let dt = el.offsetHeight * ( hoverElId + 1 ) - itemContainer.offsetHeight;\r\n if ( dt > 0 )\r\n {\r\n itemContainer.scrollTo( {\r\n top: dt,\r\n behavior: 'smooth'\r\n } );\r\n }\r\n }\r\n else if ( e.key == 'ArrowUp' && hoverElId > 0 )\r\n {\r\n hoverElId--;\r\n commandbar.querySelectorAll( '.hovered' ).forEach( ( e: HTMLElement ) => e.classList.remove( 'hovered' ) );\r\n const el = allItems[hoverElId] as any;\r\n el.classList.add( 'hovered' );\r\n }\r\n } );\r\n\r\n commandbar.addEventListener( 'focusout', function( e: FocusEvent )\r\n {\r\n if ( e.relatedTarget == e.currentTarget )\r\n {\r\n return;\r\n }\r\n e.stopPropagation();\r\n e.stopImmediatePropagation();\r\n commandbar.close();\r\n _resetBar( true );\r\n } );\r\n\r\n root.addEventListener( 'keydown', ( e: KeyboardEvent ) => {\r\n if ( e.key == ' ' && e.ctrlKey )\r\n {\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n LX.setCommandbarState( true );\r\n }\r\n else\r\n {\r\n for ( let c of LX.extensions )\r\n {\r\n if ( !LX[c] || !LX[c].prototype.onKeyPressed )\r\n {\r\n continue;\r\n }\r\n\r\n const instances = LX.CodeEditor.getInstances();\r\n for ( let i of instances )\r\n {\r\n i.onKeyPressed( e );\r\n }\r\n }\r\n }\r\n } );\r\n\r\n const header = LX.makeContainer( [ '100%', 'auto' ], 'flex flex-row' );\r\n\r\n const filter = new TextInput( null, '', ( v: string ) => {\r\n commandbar._addElements( v.toLowerCase() );\r\n }, { width: '100%', icon: 'Search', trigger: 'input', placeholder: 'Search...' } );\r\n header.appendChild( filter.root );\r\n\r\n const tabArea = new Area( {\r\n width: '100%',\r\n skipAppend: true,\r\n className: 'cb-tabs'\r\n } );\r\n\r\n const cbTabs = tabArea.addTabs( { parentClass: 'p-2' } );\r\n let cbFilter = null;\r\n\r\n // These tabs will serve as buttons by now\r\n // Filter stuff depending of the type of search\r\n {\r\n const _onSelectTab = ( e: any, tabName: string ) => {\r\n cbFilter = tabName;\r\n };\r\n\r\n cbTabs.add( 'All', document.createElement( 'div' ), { selected: true, onSelect: _onSelectTab } );\r\n // cbTabs.add( \"Main\", document.createElement('div'), { onSelect: _onSelectTab } );\r\n }\r\n\r\n const itemContainer = document.createElement( 'div' );\r\n itemContainer.className = 'searchitembox';\r\n\r\n let refPrevious: any = null;\r\n\r\n const _resetBar = ( resetInput?: boolean ) => {\r\n itemContainer.innerHTML = '';\r\n allItems.length = 0;\r\n hoverElId = null;\r\n if ( resetInput )\r\n {\r\n filter.set( '', true );\r\n }\r\n };\r\n\r\n const _addElement = ( t: any, c: any, p: any, i: any ) => {\r\n if ( !t.length )\r\n {\r\n return;\r\n }\r\n\r\n if ( refPrevious ) refPrevious.classList.remove( 'last' );\r\n\r\n let searchItem: any = document.createElement( 'div' );\r\n searchItem.className = 'searchitem last';\r\n if ( i?.checked !== undefined )\r\n {\r\n const iconHtml = i.checked ? LX.makeIcon( 'Check' ).innerHTML : '';\r\n searchItem.innerHTML = iconHtml + ( p + t );\r\n }\r\n else\r\n {\r\n searchItem.innerHTML = p + t;\r\n }\r\n searchItem.callback = c;\r\n searchItem.item = i;\r\n\r\n searchItem.addEventListener( 'click', ( e: MouseEvent ) => {\r\n if ( i.checked != undefined )\r\n {\r\n i.checked = !i.checked;\r\n }\r\n\r\n c.call( window, t, i.checked );\r\n LX.setCommandbarState( false );\r\n _resetBar( true );\r\n } );\r\n\r\n searchItem.addEventListener( 'mouseenter', function( e: MouseEvent )\r\n {\r\n commandbar.querySelectorAll( '.hovered' ).forEach( ( e: HTMLElement ) => e.classList.remove( 'hovered' ) );\r\n searchItem.classList.add( 'hovered' );\r\n hoverElId = allItems.indexOf( searchItem );\r\n } );\r\n\r\n searchItem.addEventListener( 'mouseleave', function( e: MouseEvent )\r\n {\r\n searchItem.classList.remove( 'hovered' );\r\n } );\r\n\r\n allItems.push( searchItem );\r\n itemContainer.appendChild( searchItem );\r\n refPrevious = searchItem;\r\n };\r\n\r\n const _propagateAdd = ( item: any, filter: string, path: string, skipPropagation?: boolean ) => {\r\n if ( !item || ( item.constructor != Object ) )\r\n {\r\n return;\r\n }\r\n\r\n let name = item.name;\r\n if ( name.toLowerCase().includes( filter ) )\r\n {\r\n if ( item.callback )\r\n {\r\n _addElement( name, item.callback, path, item );\r\n }\r\n }\r\n\r\n const submenu = item.submenu ?? item[name];\r\n if ( skipPropagation || !submenu )\r\n {\r\n return;\r\n }\r\n\r\n const icon = LX.makeIcon( 'ChevronRight', { svgClass: 'sm fg-secondary separator' } );\r\n path += name + icon.innerHTML;\r\n\r\n for ( let c of submenu )\r\n {\r\n _propagateAdd( c, filter, path );\r\n }\r\n };\r\n\r\n commandbar._addElements = ( filter: string ) => {\r\n _resetBar();\r\n\r\n for ( let m of LX.menubars )\r\n {\r\n for ( let i of m.items )\r\n {\r\n _propagateAdd( i, filter, '' );\r\n }\r\n }\r\n\r\n for ( let m of LX.sidebars )\r\n {\r\n for ( let i of m.items )\r\n {\r\n _propagateAdd( i, filter, '' );\r\n }\r\n }\r\n\r\n for ( let entry of LX.extraCommandbarEntries )\r\n {\r\n const name = entry.name;\r\n if ( !name.toLowerCase().includes( filter ) )\r\n {\r\n continue;\r\n }\r\n _addElement( name, entry.callback, '', {} );\r\n }\r\n\r\n if ( LX.has( 'CodeEditor' ) )\r\n {\r\n const instances = LX.CodeEditor.getInstances();\r\n if ( !instances.length || !instances[0].area.root.offsetHeight ) return;\r\n\r\n const languages = LX.CodeEditor.languages;\r\n\r\n for ( let l of Object.keys( languages ) )\r\n {\r\n const key = 'Language: ' + l;\r\n const icon = instances[0]._getFileIcon( null, languages[l].ext );\r\n const classes = icon.split( ' ' );\r\n\r\n let value = LX.makeIcon( classes[0], { svgClass: `${classes.slice( 0 ).join( ' ' )}` } ).innerHTML;\r\n value += key + \" <span class='lang-ext'>(\" + languages[l].ext + ')</span>';\r\n\r\n if ( key.toLowerCase().includes( filter ) )\r\n {\r\n _addElement( value, () => {\r\n for ( let i of instances )\r\n {\r\n i._changeLanguage( l );\r\n }\r\n }, '', {} );\r\n }\r\n }\r\n }\r\n };\r\n\r\n commandbar.appendChild( header );\r\n commandbar.appendChild( tabArea.root );\r\n commandbar.appendChild( itemContainer );\r\n\r\n return commandbar;\r\n};\r\n\r\n/**\r\n * @method setCommandbarState\r\n * @param {Boolean} value\r\n * @param {Boolean} resetEntries\r\n */\r\n\r\nLX.setCommandbarState = function( value: boolean, resetEntries: boolean = true )\r\n{\r\n const cb = this.commandbar;\r\n\r\n if ( value )\r\n {\r\n cb.show();\r\n cb.querySelector( 'input' ).focus();\r\n\r\n if ( resetEntries )\r\n {\r\n cb._addElements( undefined );\r\n }\r\n }\r\n else\r\n {\r\n cb.close();\r\n }\r\n};\r\n\r\nLX.REGISTER_COMPONENT = function( customComponentName: string, options: any = {} )\r\n{\r\n let customIdx = LX.guidGenerator();\r\n\r\n const PanelPrototype: any = Panel.prototype;\r\n PanelPrototype['add' + customComponentName] = function( name: string, instance: any, callback: any )\r\n {\r\n const userParams = Array.from( arguments ).slice( 3 );\r\n\r\n let component = new BaseComponent( ComponentType.CUSTOM, name, null, options );\r\n this._attachComponent( component );\r\n\r\n component.customName = customComponentName;\r\n component.customIdx = customIdx;\r\n\r\n component.onGetValue = () => {\r\n return instance;\r\n };\r\n\r\n component.onSetValue = ( newValue, skipCallback, event ) => {\r\n instance = newValue;\r\n _refreshComponent();\r\n element.querySelector( '.lexcustomitems' ).toggleAttribute( 'hidden', false );\r\n if ( !skipCallback )\r\n {\r\n component._trigger( new IEvent( name, instance, event ), callback );\r\n }\r\n };\r\n\r\n component.onResize = () => {\r\n const realNameWidth = component.root.domName?.style.width ?? '0px';\r\n container.style.width = `calc( 100% - ${realNameWidth})`;\r\n };\r\n\r\n const element = component.root;\r\n\r\n let container: any, customComponentsDom: any;\r\n let defaultInstance = options.default ?? {};\r\n\r\n // Add instance button\r\n\r\n const _refreshComponent = () => {\r\n if ( container ) container.remove();\r\n if ( customComponentsDom ) customComponentsDom.remove();\r\n\r\n container = document.createElement( 'div' );\r\n container.className = 'lexcustomcontainer w-full';\r\n element.appendChild( container );\r\n element.dataset['opened'] = false;\r\n\r\n const customIcon = LX.makeIcon( options.icon ?? 'Box' );\r\n const menuIcon = LX.makeIcon( 'Menu' );\r\n\r\n let buttonName = customComponentName + ( !instance ? ' [empty]' : '' );\r\n let buttonEl = this.addButton( null, buttonName, ( value: any, event: MouseEvent ) => {\r\n if ( instance )\r\n {\r\n element.querySelector( '.lexcustomitems' ).toggleAttribute( 'hidden' );\r\n element.dataset['opened'] = !element.querySelector( '.lexcustomitems' ).hasAttribute( 'hidden' );\r\n }\r\n else\r\n {\r\n LX.addContextMenu( null, event, ( c: ContextMenu ) => {\r\n c.add( 'New ' + customComponentName, () => {\r\n instance = {};\r\n _refreshComponent();\r\n element.querySelector( '.lexcustomitems' ).toggleAttribute( 'hidden', false );\r\n element.dataset['opened'] = !element.querySelector( '.lexcustomitems' ).hasAttribute(\r\n 'hidden'\r\n );\r\n } );\r\n } );\r\n }\r\n }, { buttonClass: 'custom' } );\r\n\r\n const buttonSpan = buttonEl.root.querySelector( 'span' );\r\n buttonSpan.prepend( customIcon );\r\n buttonSpan.appendChild( menuIcon );\r\n container.appendChild( buttonEl.root );\r\n\r\n if ( instance )\r\n {\r\n menuIcon.addEventListener( 'click', ( e: MouseEvent ) => {\r\n e.stopImmediatePropagation();\r\n e.stopPropagation();\r\n LX.addContextMenu( null, e, ( c: ContextMenu ) => {\r\n c.add( 'Clear', () => {\r\n instance = null;\r\n _refreshComponent();\r\n } );\r\n } );\r\n } );\r\n }\r\n\r\n // Show elements\r\n\r\n customComponentsDom = document.createElement( 'div' );\r\n customComponentsDom.className = 'lexcustomitems';\r\n customComponentsDom.toggleAttribute( 'hidden', true );\r\n element.appendChild( customComponentsDom );\r\n\r\n if ( instance )\r\n {\r\n this.queue( customComponentsDom );\r\n\r\n const on_instance_changed = ( key: string, value: any, event: any ) => {\r\n const setter = options[`_set_${key}`];\r\n if ( setter )\r\n {\r\n setter.call( instance, value );\r\n }\r\n else\r\n {\r\n instance[key] = value;\r\n }\r\n component._trigger( new IEvent( name, instance, event ), callback );\r\n };\r\n\r\n for ( let key in defaultInstance )\r\n {\r\n let value = null;\r\n\r\n const getter = options[`_get_${key}`];\r\n if ( getter )\r\n {\r\n value = instance[key] ? getter.call( instance ) : getter.call( defaultInstance );\r\n }\r\n else\r\n {\r\n value = instance[key] ?? defaultInstance[key];\r\n }\r\n\r\n if ( !value )\r\n {\r\n continue;\r\n }\r\n\r\n switch ( value.constructor )\r\n {\r\n case String:\r\n if ( value[0] === '#' )\r\n {\r\n this.addColor( key, value, on_instance_changed.bind( this, key ) );\r\n }\r\n else\r\n {\r\n this.addText( key, value, on_instance_changed.bind( this, key ) );\r\n }\r\n break;\r\n case Number:\r\n this.addNumber( key, value, on_instance_changed.bind( this, key ) );\r\n break;\r\n case Boolean:\r\n this.addCheckbox( key, value, on_instance_changed.bind( this, key ) );\r\n break;\r\n case Array:\r\n if ( value.length > 4 )\r\n {\r\n this.addArray( key, value, on_instance_changed.bind( this, key ) );\r\n }\r\n else\r\n {\r\n this._addVector( value.length, key, value, on_instance_changed.bind( this, key ) );\r\n }\r\n break;\r\n default:\r\n console.warn( `Unsupported property type: ${value.constructor.name}` );\r\n break;\r\n }\r\n }\r\n\r\n if ( options.onCreate )\r\n {\r\n options.onCreate.call( this, this, ...userParams );\r\n }\r\n\r\n this.clearQueue();\r\n }\r\n };\r\n\r\n _refreshComponent();\r\n };\r\n};\r\n"],"names":["LX","ComponentType"],"mappings":"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"}
|