kempo 1.0.2 → 1.1.1

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.
Files changed (79) hide show
  1. package/dist/components/Dialog.js +1 -1
  2. package/dist/components/Icon.js +1 -1
  3. package/dist/components/Toggle.js +1 -0
  4. package/dist/index.js +1 -1
  5. package/dist/utils/cli.js +1 -1
  6. package/docs/components/_template.html +0 -4
  7. package/docs/components/card.html +0 -4
  8. package/docs/components/codeeditor.html +0 -4
  9. package/docs/components/component.html +0 -4
  10. package/docs/components/dialog.html +21 -5
  11. package/docs/components/icon.html +18 -4
  12. package/docs/components/import.html +0 -4
  13. package/docs/components/lazycomponent.html +0 -4
  14. package/docs/components/resize.html +0 -4
  15. package/docs/components/show-more.html +0 -4
  16. package/docs/components/sidemenu.html +0 -4
  17. package/docs/components/split.html +0 -4
  18. package/docs/components/tabs.html +0 -4
  19. package/docs/components/toggle.html +152 -0
  20. package/docs/components/websnippeteditor.html +0 -4
  21. package/docs/index.html +0 -4
  22. package/docs/kempo/components/Dialog.js +1 -1
  23. package/docs/kempo/components/Icon.js +1 -1
  24. package/docs/kempo/components/Toggle.js +1 -0
  25. package/docs/kempo/index.js +1 -1
  26. package/docs/kempo/utils/cli.js +1 -1
  27. package/docs/nav-1.inc.html +1 -0
  28. package/docs/nav.inc.html +1 -0
  29. package/docs/styles/_template.html +0 -4
  30. package/docs/styles/borders-spacing.html +0 -4
  31. package/docs/styles/buttons.html +0 -4
  32. package/docs/styles/colors.html +0 -4
  33. package/docs/styles/displays-layouts.html +0 -4
  34. package/docs/styles/embed-1.html +0 -4
  35. package/docs/styles/inputs.html +0 -4
  36. package/docs/styles/tables.html +0 -4
  37. package/docs/styles/typography.html +0 -4
  38. package/package.json +3 -2
  39. package/scripts/build.js +4 -4
  40. package/scripts/docs.js +31 -3
  41. package/src/components/Dialog.js +22 -5
  42. package/src/components/Icon.js +14 -5
  43. package/src/components/Toggle.js +134 -0
  44. package/src/utils/cli.js +33 -2
  45. package/test/index.js +1 -1
  46. package/test/tests/utils/cli.test.js +1 -1
  47. package/docs/kempo/components/Collapse.js +0 -1
  48. package/docs/src/icons/arrow-down-double.svg +0 -1
  49. package/docs/src/icons/arrow-up-double.svg +0 -1
  50. package/docs/src/icons/close.svg +0 -2
  51. package/docs/src/icons/compare.svg +0 -1
  52. package/docs/src/icons/dark-mode.svg +0 -1
  53. package/docs/src/icons/delete.svg +0 -1
  54. package/docs/src/icons/filter-off.svg +0 -1
  55. package/docs/src/icons/filter.svg +0 -1
  56. package/docs/src/icons/light-mode.svg +0 -1
  57. package/docs/src/icons/menu.svg +0 -1
  58. package/docs/src/icons/pause.svg +0 -1
  59. package/docs/src/icons/play.svg +0 -1
  60. package/docs/src/icons/search.svg +0 -1
  61. package/docs/src/icons/settings.svg +0 -1
  62. package/docs/src/icons/storage.svg +0 -1
  63. package/docs/src/icons/trash-x.svg +0 -1
  64. /package/docs/{kempo/icons → icons}/arrow-down-double.svg +0 -0
  65. /package/docs/{kempo/icons → icons}/arrow-up-double.svg +0 -0
  66. /package/docs/{kempo/icons → icons}/close.svg +0 -0
  67. /package/docs/{kempo/icons → icons}/compare.svg +0 -0
  68. /package/docs/{kempo/icons → icons}/dark-mode.svg +0 -0
  69. /package/docs/{kempo/icons → icons}/delete.svg +0 -0
  70. /package/docs/{kempo/icons → icons}/filter-off.svg +0 -0
  71. /package/docs/{kempo/icons → icons}/filter.svg +0 -0
  72. /package/docs/{kempo/icons → icons}/light-mode.svg +0 -0
  73. /package/docs/{kempo/icons → icons}/menu.svg +0 -0
  74. /package/docs/{kempo/icons → icons}/pause.svg +0 -0
  75. /package/docs/{kempo/icons → icons}/play.svg +0 -0
  76. /package/docs/{kempo/icons → icons}/search.svg +0 -0
  77. /package/docs/{kempo/icons → icons}/settings.svg +0 -0
  78. /package/docs/{kempo/icons → icons}/storage.svg +0 -0
  79. /package/docs/{kempo/icons → icons}/trash-x.svg +0 -0
@@ -1 +1 @@
1
- import Component from"./Component.js";import"./FocusCapture.js";import"./Icon.js";import{firstFocusable,onEvent,offEvent,dispatchEvent}from"../utils/element.js";export default class Dialog extends Component{constructor({opened:n=!1,closeBtn:e=!0,overlayClose:t=!0,confirmText:o="",confirmClasses:i="success ml",confirmAction:s=(()=>{}),cancelText:a="",cancelClasses:c="",cancelAction:l=(()=>{}),closeCallback:r=(()=>{})}={}){super(),this.registerAttributes({opened:n,closeBtn:e,overlayClose:t,confirmText:o,confirmClasses:i,cancelText:a,cancelClasses:c}),this.registerProps({confirmAction:s,cancelAction:l,closeCallback:r,previousFocus:null,_clickHandler:n=>{const{target:{id:e}}=n;"overlay"==e&&this.overlayClose||"close"==e?this.close():"cancel"==e?(this.cancelAction(n),n.defaultPrevented||this.close()):"confirm"==e&&(this.confirmAction(n),n.defaultPrevented||this.close())},_keydownHandler:({keyCode:n})=>{27===n&&this.close()},_hasTitle:()=>!!this.querySelector('[slot="title"]')})}connectedCallback(){super.connectedCallback(),onEvent(this.shadowRoot,"click",this._clickHandler)}disconnectedCallback(){super.connectedCallback(),offEvent(this.shadowRoot,"click",this._clickHandler),offEvent(window,"keydown",this._keydownHandler)}attributeChangedCallback(n,e,t){super.attributeChangedCallback(n,e,t),"opened"===name&&dispatchEvent(this,t?"opened":"closed")}open(){this.opened=!0;const n=this.shadowRoot.querySelector("[autofocus]")||firstFocusable(this.shadowRoot);n&&n.focus(),onEvent(window,"keydown",this._keydownHandler)}close(){this.opened=!1,this.blur(),this.closeCallback(),offEvent(window,"keydown",this._keydownHandler)}toggle(){this.opened?this.close():this.open()}focus(){const n=firstFocusable(this.shadowRoot);n&&(this.previousFocus=document.activeElement,n.focus())}blur(){this.previousFocus&&this.previousFocus.focus()}get shadowTemplate(){return`\n <k-focus-capture>\n <button id="overlay" aria-label="Close the Dialog"></button>\n <div id="wrapper">\n <div\n id="dialog"\n role="dialog"\n aria-modal="true"\n aria-labelledby="title"\n >\n <div\n id="header"\n class="${this._hasTitle()?"has-title":""}"\n >\n <div\n id="title"\n ><slot name="title"></slot></div>\n ${this.renderIf(this.closeBtn,'\n <button\n id="close"\n >\n <k-icon name="close"></k-icon>\n </button>\n ')}\n </div>\n <div id="body">\n ${super.shadowTemplate}\n </div>\n ${this.renderIf(this.cancelText||this.confirmText,`\n <div id="footer">\n ${this.renderIf(this.cancelText,`\n <button id="cancel" class="${this.cancelClasses}">\n ${this.cancelText}\n </button>\n `)}\n ${this.renderIf(this.confirmText,`\n <button id="confirm" class="${this.confirmClasses}">\n ${this.confirmText}\n </button>\n `)}\n </div>\n `)}\n </div>\n </div>\n </k-focus-capture>\n `}get shadowStyles(){return`\n ${super.shadowStyles}\n :host {\n display: inline;\n height: 0;\n width: 0;\n }\n :host(:not([opened])){\n display: none;\n }\n #overlay {\n position: fixed;\n width: 100vw;\n height: 100vh;\n top: 0;\n left: 0;\n background-color: var(--c_overlay);\n z-index: 100;\n border: 0px solid transparent;\n box-shadow: 0 0 0 transparent;\n }\n #wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n position: fixed;\n width: 100vw;\n height: 100vh;\n top: 0;\n left: 0;\n z-index: 101;\n pointer-events: none;\n }\n #dialog {\n display: flex;\n flex-direction: column;\n min-width: var(--min_width, 20rem);\n width: var(--width, fit-content);\n max-width: var(--max_width, calc(100vw - 2rem));\n min-height: var(--min_height, 12rem);\n height: var(--height, fit-content);\n max-height: var(--max_height, calc(100vh - 2rem));\n background-color: var(--c_bg);\n box-shadow: var(--drop_shadow);\n border-radius: var(--radius);\n pointer-events: all;\n }\n #header {\n display: flex;\n align-items: center;\n }\n #header.has-title {\n border-bottom: 1px solid var(--c_border);\n }\n #title {\n flex: 1 1 auto;\n }\n #close {\n border: 0px;\n background: transparent;\n box-shadow: 0 0 0 transparent;\n color: var(--tc);\n }\n #close k-icon {\n pointer-events: none;\n }\n #body {\n flex: 1 1 auto;\n }\n #footer {\n display: flex;\n justify-content: flex-end;\n padding: var(--spacer_h);\n }\n `}static renderOnChange=["opened","closeBtn","overlayClose","title","confirmText","cancelText"];static create(n="",e={}){const t=new Dialog({opened:!0,...e});onEvent(t,"close",t.remove),n instanceof HTMLElement||n instanceof DocumentFragment?t.appendChild(n):n instanceof NodeList?n.forEach((n=>t.appendChild(n))):t.innerHTML=n,document.body.appendChild(t)}static confirm(n,e,t){Dialog.create(`\n <h5 slot="title" class="pyh px m0">Confirm Event Deletion</h5>\n <p class="p">${n}</p>\n `,{...t,closeBtn:!1,overlayClose:!1,confirmText:"Yes",confirmClasses:"success ml",confirmAction:()=>e(!0),cancelText:"No",cancelClasses:"danger",cancelAction:()=>e(!1)})}}window.customElements.define("k-dialog",Dialog);
1
+ import Component from"./Component.js";import"./FocusCapture.js";import"./Icon.js";import{firstFocusable,onEvent,offEvent,dispatchEvent}from"../utils/element.js";export default class Dialog extends Component{constructor({opened:n=!1,closeBtn:e=!0,overlayClose:t=!0,confirmText:o="",confirmClasses:i="success ml",confirmAction:s=(()=>{}),cancelText:a="",cancelClasses:c="",cancelAction:l=(()=>{}),closeCallback:r=(()=>{})}={}){super(),this.registerAttributes({opened:n,closeBtn:e,overlayClose:t,confirmText:o,confirmClasses:i,cancelText:a,cancelClasses:c}),this.registerProps({confirmAction:s,cancelAction:l,closeCallback:r,previousFocus:null,_clickHandler:n=>{const{target:{id:e}}=n;"overlay"==e&&this.overlayClose||"close"==e?this.close():"cancel"==e?(this.cancelAction(n),n.defaultPrevented||this.close()):"confirm"==e&&(this.confirmAction(n),n.defaultPrevented||this.close())},_keydownHandler:({keyCode:n})=>{27===n&&this.close()},_hasTitle:()=>!!this.querySelector('[slot="title"]')})}connectedCallback(){super.connectedCallback(),onEvent(this.shadowRoot,"click",this._clickHandler)}disconnectedCallback(){super.connectedCallback(),offEvent(this.shadowRoot,"click",this._clickHandler),offEvent(window,"keydown",this._keydownHandler)}attributeChangedCallback(n,e,t){super.attributeChangedCallback(n,e,t),"opened"===name&&dispatchEvent(this,t?"opened":"closed")}open(){this.opened=!0;const n=this.shadowRoot.querySelector("[autofocus]")||firstFocusable(this.shadowRoot);n&&n.focus(),onEvent(window,"keydown",this._keydownHandler)}close(){this.opened=!1,this.blur(),this.closeCallback(),offEvent(window,"keydown",this._keydownHandler)}toggle(){this.opened?this.close():this.open()}focus(){const n=firstFocusable(this.shadowRoot);n&&(this.previousFocus=document.activeElement,n.focus())}blur(){this.previousFocus&&this.previousFocus.focus()}get shadowTemplate(){return`\n <k-focus-capture>\n <button id="overlay" aria-label="Close the Dialog"></button>\n <div id="wrapper">\n <div\n id="dialog"\n role="dialog"\n aria-modal="true"\n aria-labelledby="title"\n >\n <div\n id="header"\n class="${this._hasTitle()?"has-title":""}"\n >\n <div\n id="title"\n ><slot name="title"></slot></div>\n ${this.renderIf(this.closeBtn,'\n <button\n id="close"\n >\n <k-icon name="close"></k-icon>\n </button>\n ')}\n </div>\n <div id="body">\n ${super.shadowTemplate}\n </div>\n ${this.renderIf(this.cancelText||this.confirmText,`\n <div id="footer">\n ${this.renderIf(this.cancelText,`\n <button id="cancel" class="${this.cancelClasses}">\n ${this.cancelText}\n </button>\n `)}\n ${this.renderIf(this.confirmText,`\n <button id="confirm" class="${this.confirmClasses}">\n ${this.confirmText}\n </button>\n `)}\n </div>\n `)}\n </div>\n </div>\n </k-focus-capture>\n `}get shadowStyles(){return`\n ${super.shadowStyles}\n :host {\n display: inline;\n height: 0;\n width: 0;\n }\n :host(:not([opened])){\n display: none;\n }\n #overlay {\n position: fixed;\n width: 100vw;\n height: 100vh;\n top: 0;\n left: 0;\n background-color: var(--c_overlay);\n z-index: 100;\n border: 0px solid transparent;\n box-shadow: 0 0 0 transparent;\n }\n #wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n position: fixed;\n width: 100vw;\n height: 100vh;\n top: 0;\n left: 0;\n z-index: 101;\n pointer-events: none;\n }\n #dialog {\n display: flex;\n flex-direction: column;\n min-width: var(--min_width, 20rem);\n width: var(--width, fit-content);\n max-width: var(--max_width, calc(100vw - 2rem));\n min-height: var(--min_height, 12rem);\n height: var(--height, fit-content);\n max-height: var(--max_height, calc(100vh - 2rem));\n background-color: var(--c_bg);\n box-shadow: var(--drop_shadow);\n border-radius: var(--radius);\n pointer-events: all;\n }\n #header {\n display: flex;\n align-items: center;\n }\n #header.has-title {\n border-bottom: 1px solid var(--c_border);\n }\n #title {\n flex: 1 1 auto;\n }\n #close {\n border: 0px;\n background: transparent;\n box-shadow: 0 0 0 transparent;\n color: var(--tc);\n }\n #close k-icon {\n pointer-events: none;\n }\n #body {\n flex: 1 1 auto;\n }\n #footer {\n display: flex;\n justify-content: flex-end;\n padding: var(--spacer_h);\n }\n `}static renderOnChange=["opened","closeBtn","overlayClose","title","confirmText","cancelText"];static create(n="",e={}){const t=new Dialog({opened:!0,...e});onEvent(t,"close",t.remove),n instanceof HTMLElement||n instanceof DocumentFragment?t.appendChild(n):n instanceof NodeList?n.forEach((n=>t.appendChild(n))):t.innerHTML=n,document.body.appendChild(t)}static confirm(n,e,t={title:"Confirm"}){Dialog.create(`\n <h5 slot="title" class="pyh px m0 tc-danger">${t.title}</h5>\n <p class="p">${n}</p>\n `,{...t,closeBtn:!1,overlayClose:!1,confirmText:"Yes",confirmClasses:"success ml",confirmAction:()=>e(!0),cancelText:"No",cancelClasses:"danger",cancelAction:()=>e(!1)})}static error(n,e,t={title:"Error"}){Dialog.create(`\n <h5 slot="title" class="pyh px m0">${t.title}</h5>\n <p class="p">${n}</p>\n `,{...t,cancelText:"Ok"})}}window.customElements.define("k-dialog",Dialog);
@@ -1 +1 @@
1
- import Component from"./Component.js";export default class Icon extends Component{constructor(){super(),this.registerAttributes({src:"",name:""})}async render(t){return!!await super.render(t)&&(this.src?(this.innerHTML=await(await fetch(this.src)).text(),this.fixSVG()):this.name?(this.innerHTML=await(await fetch(`${Icon.pathToIcons}/${this.name}.svg`)).text(),this.fixSVG()):(this.rendered=!1,this.innerHTML=""),!0)}attributeChangedCallback(t,e,n){["src","name"].includes(t)&&this.render(!0)}fixSVG(){const t=this.querySelector("svg");t.removeAttribute("width"),t.removeAttribute("height"),t.querySelectorAll("path, rect, circle").forEach((t=>{t.setAttribute("fill","currentColor")}))}get shadowStyles(){return"\n :host {\n display: inline-block;\n vertical-align: bottom;\n }\n ::slotted(svg){\n height: 1.35em;\n vertical-align: middle;\n }\n "}static observedAttributes=["name","src"];static pathToIcons="/icons"}window.customElements.define("k-icon",Icon);
1
+ import Component from"./Component.js";export default class Icon extends Component{constructor(){super(),this.registerAttributes({src:"",name:""})}async render(t){if(await super.render(t)){if(this.src){const t=await fetch(this.src);200===t.status?(this.innerHTML=await t.text(),this.fixSVG()):this.innerHTML.length||(this.innerHTML=Icon.fallback)}else if(this.name){const t=await fetch(`${Icon.pathToIcons}/${this.name}.svg`);200===t.status?(this.innerHTML=await t.text(),this.fixSVG()):this.innerHTML.length||(this.innerHTML=Icon.fallback)}else this.rendered=!1,this.innerHTML.length||(this.innerHTML=Icon.fallback);return!0}return!1}attributeChangedCallback(t,e,n){["src","name"].includes(t)&&this.render(!0)}fixSVG(){const t=this.querySelector("svg");t.removeAttribute("width"),t.removeAttribute("height"),t.querySelectorAll("path, rect, circle").forEach((t=>{t.setAttribute("fill","currentColor")}))}get shadowStyles(){return"\n :host {\n display: inline-block;\n vertical-align: bottom;\n }\n ::slotted(svg){\n height: 1.35em;\n vertical-align: middle;\n }\n "}static observedAttributes=["name","src"];static pathToIcons="/icons";static fallback='\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currnetColor" d="M480-79q-16 0-30.5-6T423-102L102-423q-11-12-17-26.5T79-480q0-16 6-31t17-26l321-321q12-12 26.5-17.5T480-881q16 0 31 5.5t26 17.5l321 321q12 11 17.5 26t5.5 31q0 16-5.5 30.5T858-423L537-102q-11 11-26 17t-31 6Zm0-80 321-321-321-321-321 321 321 321Zm-40-281h80v-240h-80v240Zm40 120q17 0 28.5-11.5T520-360q0-17-11.5-28.5T480-400q-17 0-28.5 11.5T440-360q0 17 11.5 28.5T480-320Zm0-160Z"/></svg>\n '}window.customElements.define("k-icon",Icon);
@@ -0,0 +1 @@
1
+ import Component from"./Component.js";import{onEvent,offEvent,dispatchEvent}from"../utils/element.js";const clickHandler=Symbol(),keyDownHandler=Symbol();export default class Toggle extends Component{constructor(){super(),this[clickHandler]=()=>{this.toggle()},this[keyDownHandler]=({code:n})=>{["Space","Enter"].includes(n)&&this.toggle()},this.registerAttributes({value:!1}),this.tabIndex=0}connectedCallback(){super.connectedCallback(),onEvent(this,"click",this[clickHandler]),onEvent(this,"keydown",this[keyDownHandler])}disconnectedCallback(){super.disconnectedCallback(),offEvent(this,"click",this[clickHandler]),offEvent(this,"keydown",this[keyDownHandler])}attributeChangedCallback(n,e,a){"value"===n&&dispatchEvent(this,"change",{value:a})}on(){this.value=!0,dispatchEvent(this,"on",{value:!0})}off(){this.value=!1,dispatchEvent(this,"on",{value:!1})}toggle(){this.value?this.off():this.on(),dispatchEvent(this,"toggle",{value:this.value})}get shadowTemplate(){return`\n <div id="switch">\n <div id="handle"></div>\n </div>\n <label id="label">\n ${super.shadowTemplate}\n </label>\n `}get shadowStyles(){return`\n ${super.shadowStyles}\n :host {\n --switch_height: 2rem;\n --switch_width: 3rem;\n --switch_border: 1px solid var(--c_border);\n --switch_background__off: var(--c_bg__alt);\n --switch_background__on: var(--c_success);\n --handle_size__off: 1rem;\n --handle_size__on: 1.5rem;\n --handle_border: 1px solid var(--c_border);\n --handle_background__off: var(--c_border);\n --handle_background__on: white;\n\n display: flex;\n align-items: center;\n cursor: pointer;\n margin-bottom: var(--spacer);\n border-radius: 999rem;\n }\n #switch {\n display: flex;\n align-items: center;\n width: var(--switch_width);\n height: var(--switch_height);\n border: var(--switch_border);\n background: var(--switch_background__off);\n border-radius: 999rem;\n margin-right: var(--spacer);\n }\n #handle {\n --margin: calc( (var(--switch_height) - var(--handle_size__off)) / 2);\n width: var(--handle_size__off);\n height: var(--handle_size__off);\n border: var(--handle_border);\n background: var(--handle_background__off);\n border-radius: 999rem;\n transform: translateX(var(--margin));\n transition: width var(--animation_ms, 256ms), height var(--animation_ms, 256ms), transform var(--animation_ms, 256ms);\n }\n :host([value="true"]) #switch {\n background: var(--switch_background__on);\n }\n :host([value="true"]) #handle {\n --m: calc( (var(--switch_height) - var(--handle_size__on)) / 2);\n --d: calc( var(--switch_width) - var(--handle_size__on) - var(--m));\n width: var(--handle_size__on);\n height: var(--handle_size__on);\n background: var(--handle_background__on);\n transform: translateX(var(--d));\n }\n #label {\n display: block;\n flex: 1 1 auto;\n padding: 0;\n }\n `}static observedAttributes=[...Component.observedAttributes,"value"]}window.customElements.define("k-toggle",Toggle);
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import Card from"./components/Card.js";import CodeEditor from"./components/CodeEditor.js";import Component from"./components/Component.js";import Dialog from"./components/Dialog.js";import FocusCapture from"./components/FocusCapture.js";import Icon from"./components/Icon.js";import Import from"./components/Import.js";import LazyComponent from"./components/LazyComponent.js";import ReactiveComponent from"./components/ReactiveComponent.js";import ReactiveLazyComponent from"./components/ReactiveLazyComponent.js";import Resize from"./components/Resize.js";import Search from"./components/Search.js";import ShowMore from"./components/ShowMore.js";import SideMenu from"./components/SideMenu.js";import Split from"./components/Split.js";import Tabs from"./components/Tabs.js";import ThemeSwitcher from"./components/ThemeSwitcher.js";import Timestamp from"./components/Timestamp.js";import WebSnippetEditor from"./components/WebSnippetEditor.js";import cli from"./utils/cli.js";import cookie from"./utils/cookie.js";import debounce from"./utils/debounce.js";import drag from"./utils/drag.js";import element from"./utils/element.js";import formatTimestamp from"./utils/formatTimestamp.js";import fuzzyMatch from"./utils/fuzzyMatch.js";import getPreferredTheme from"./utils/getPreferredTheme.js";import loadCss from"./utils/loadCss.js";import loadScript from"./utils/loadScript.js";import object from"./utils/object.js";import string from"./utils/string.js";import toFunction from"./utils/toFunction.js";import type from"./utils/type.js";import waitFrames from"./utils/waitFrames.js";export default{Card:Card,CodeEditor:CodeEditor,Component:Component,Dialog:Dialog,FocusCapture:FocusCapture,Icon:Icon,Import:Import,LazyComponent:LazyComponent,ReactiveComponent:ReactiveComponent,ReactiveLazyComponent:ReactiveLazyComponent,Resize:Resize,Search:Search,ShowMore:ShowMore,SideMenu:SideMenu,Split:Split,Tabs:Tabs,ThemeSwitcher:ThemeSwitcher,Timestamp:Timestamp,WebSnippetEditor:WebSnippetEditor,cli:cli,cookie:cookie,debounce:debounce,drag:drag,element:element,formatTimestamp:formatTimestamp,fuzzyMatch:fuzzyMatch,getPreferredTheme:getPreferredTheme,loadCss:loadCss,loadScript:loadScript,object:object,string:string,toFunction:toFunction,type:type,waitFrames:waitFrames};
1
+ import Card from"./components/Card.js";import CodeEditor from"./components/CodeEditor.js";import Component from"./components/Component.js";import Dialog from"./components/Dialog.js";import FocusCapture from"./components/FocusCapture.js";import Icon from"./components/Icon.js";import Import from"./components/Import.js";import LazyComponent from"./components/LazyComponent.js";import ReactiveComponent from"./components/ReactiveComponent.js";import ReactiveLazyComponent from"./components/ReactiveLazyComponent.js";import Resize from"./components/Resize.js";import Search from"./components/Search.js";import ShowMore from"./components/ShowMore.js";import SideMenu from"./components/SideMenu.js";import Split from"./components/Split.js";import Tabs from"./components/Tabs.js";import ThemeSwitcher from"./components/ThemeSwitcher.js";import Timestamp from"./components/Timestamp.js";import Toggle from"./components/Toggle.js";import WebSnippetEditor from"./components/WebSnippetEditor.js";import cli from"./utils/cli.js";import cookie from"./utils/cookie.js";import debounce from"./utils/debounce.js";import drag from"./utils/drag.js";import element from"./utils/element.js";import formatTimestamp from"./utils/formatTimestamp.js";import fuzzyMatch from"./utils/fuzzyMatch.js";import getPreferredTheme from"./utils/getPreferredTheme.js";import loadCss from"./utils/loadCss.js";import loadScript from"./utils/loadScript.js";import object from"./utils/object.js";import string from"./utils/string.js";import toFunction from"./utils/toFunction.js";import type from"./utils/type.js";import waitFrames from"./utils/waitFrames.js";export default{Card:Card,CodeEditor:CodeEditor,Component:Component,Dialog:Dialog,FocusCapture:FocusCapture,Icon:Icon,Import:Import,LazyComponent:LazyComponent,ReactiveComponent:ReactiveComponent,ReactiveLazyComponent:ReactiveLazyComponent,Resize:Resize,Search:Search,ShowMore:ShowMore,SideMenu:SideMenu,Split:Split,Tabs:Tabs,ThemeSwitcher:ThemeSwitcher,Timestamp:Timestamp,Toggle:Toggle,WebSnippetEditor:WebSnippetEditor,cli:cli,cookie:cookie,debounce:debounce,drag:drag,element:element,formatTimestamp:formatTimestamp,fuzzyMatch:fuzzyMatch,getPreferredTheme:getPreferredTheme,loadCss:loadCss,loadScript:loadScript,object:object,string:string,toFunction:toFunction,type:type,waitFrames:waitFrames};
package/dist/utils/cli.js CHANGED
@@ -1 +1 @@
1
- const args={};let win={};"undefined"!=typeof window?win=window:"undefined"!=typeof global&&(win=global),win.log=(...e)=>{args.debug&&console.log(...e)};export default(e={d:"debug"})=>{let s="",t=[];const n=()=>{s&&(0===t.length?args[s]=!0:1===t.length?args[s]=t[0]:args[s]=t)};for(let g=2;g<process.argv.length;g++){const o=process.argv[g];o.startsWith("-")?(n(),o.startsWith("--")?s=o.slice(2):(s=o.slice(1),e[s]&&(s=e[s])),t=[]):t.push(o)}return n(),args};
1
+ import{spawn}from"child_process";const args={};let win={};"undefined"!=typeof window?win=window:"undefined"!=typeof global&&(win=global),win.log=(...e)=>{args.debug&&console.log(...e)};export const getArgs=(e={d:"debug"})=>{let s="",o=[];const r=()=>{s&&(0===o.length?args[s]=!0:1===o.length?"false"===o[0]?args[s]=!1:args[s]=o[0]:args[s]=o)};for(let t=2;t<process.argv.length;t++){const n=process.argv[t];n.startsWith("-")?(r(),n.startsWith("--")?s=n.slice(2):(s=n.slice(1),e[s]&&(s=e[s])),o=[]):o.push(n)}return r(),args};export const runChildProcess=e=>new Promise(((s,o)=>{const[r,...t]=e.split(" ");spawn(r,t).on("close",(e=>{0===e?s(`child process exited with code ${e}`):o(new Error(`child process exited with code ${e}`))}))}));export const runChildNodeProcess=(e,s={})=>{const o=`node ${e} ${Object.entries(s).flatMap((([e,s])=>!0===s?[`--${e}`]:[`--${e}`,s])).join(" ")}`;return runChildProcess(o)};
@@ -13,10 +13,6 @@
13
13
  <main>
14
14
 
15
15
  </main>
16
- <script type="module">
17
- import Icon from '../kempo/components/Icon.js';
18
- Icon.pathToIcons = '../kempo/icons';
19
- </script>
20
16
  <script type="module" src="../kempo/components/Import.js"></script>
21
17
  </body>
22
18
  </html>
@@ -25,10 +25,6 @@
25
25
 
26
26
  </main>
27
27
  <div style="height:33vh"></div>
28
- <script type="module">
29
- import Icon from '../kempo/components/Icon.js';
30
- Icon.pathToIcons = '../kempo/icons';
31
- </script>
32
28
  <script type="module" src="../kempo/components/Import.js"></script>
33
29
  <script type="module" src="../kempo/components/Card.js"></script>
34
30
  </body>
@@ -19,10 +19,6 @@
19
19
  &lt;/k-code-editor>
20
20
  </k-code-editor>
21
21
  </main>
22
- <script type="module">
23
- import Icon from '../kempo/components/Icon.js';
24
- Icon.pathToIcons = '../kempo/icons';
25
- </script>
26
22
  <script type="module" src="../kempo/components/Import.js"></script>
27
23
  <script type="module" src="../kempo/components/CodeEditor.js"></script>
28
24
  </body>
@@ -79,10 +79,6 @@
79
79
 
80
80
  </main>
81
81
  <div style="height:33vh"></div>
82
- <script type="module">
83
- import Icon from '../kempo/components/Icon.js';
84
- Icon.pathToIcons = '../kempo/icons';
85
- </script>
86
82
  <script type="module" src="../kempo/components/Import.js"></script>
87
83
  </body>
88
84
  </html>
@@ -66,21 +66,37 @@
66
66
  <p class="p">Ranch is gross</p>
67
67
  </k-dialog>
68
68
 
69
+ <h3>JavaScript Usage</h3>
70
+ <h5>Create Dialog</h5>
71
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"d7"</span>&gt;</span>Open Dialog<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"module"</span>&gt;</span><span class="javascript"><br /> <span class="hljs-keyword">import</span> Dialog <span class="hljs-keyword">from</span> <span class="hljs-string">'/kempo/components/Dialog.js'</span>;<br /> <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'d7'</span>).addEventListener(<span class="hljs-string">'click'</span>, () =&gt; {<br /> Dialog.create(<span class="hljs-string">'&lt;p&gt;Hello World&lt;/p&gt;'</span>);<br /> });<br /></span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span></code></pre>
72
+ <button id="d7" class="mb">Open Dialog</button>
73
+ <script type="module">
74
+ import Dialog from '/kempo/components/Dialog.js';
75
+ document.getElementById('d7').addEventListener('click', () => {
76
+ Dialog.create('<p>Hello World</p>');
77
+ });
78
+ </script>
79
+
80
+ <h5>Error Dialog</h5>
81
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"d8"</span>&gt;</span>Open Dialog<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"module"</span>&gt;</span><span class="javascript"><br /> <span class="hljs-keyword">import</span> Dialog <span class="hljs-keyword">from</span> <span class="hljs-string">'/kempo/components/Dialog.js'</span>;<br /> <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'d8'</span>).addEventListener(<span class="hljs-string">'click'</span>, () =&gt; {<br /> Dialog.error(<span class="hljs-string">"&lt;p&gt;Oh no, don't do that!&lt;/p&gt;"</span>);<br /> });<br /></span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span></code></pre>
82
+ <button id="d8" class="mb">Open Dialog</button>
83
+ <script type="module">
84
+ import Dialog from '/kempo/components/Dialog.js';
85
+ document.getElementById('d8').addEventListener('click', () => {
86
+ Dialog.error("Oh no, don't do that!");
87
+ });
88
+ </script>
89
+
69
90
 
70
91
 
71
92
  </main>
72
93
  <div style="height:33vh"></div>
73
- <script type="module">
74
- import Icon from '../kempo/components/Icon.js';
75
- Icon.pathToIcons = '../kempo/icons';
76
- </script>
77
94
  <script type="module" src="../kempo/components/Import.js"></script>
78
95
  <script type="module" src="../kempo/components/Dialog.js"></script>
79
96
  <script>
80
97
  document.querySelectorAll('.openDialog').forEach( $btn => {
81
98
  $btn.addEventListener('click', () => {
82
99
  const $dialog = document.getElementById($btn.dataset.dialog);
83
- console.log($dialog);
84
100
  if($dialog) $dialog.open();
85
101
  });
86
102
  });
@@ -43,6 +43,24 @@
43
43
  </div>
44
44
  </div>
45
45
 
46
+ <h3>Fallback Icon</h3>
47
+ <p>Put an SVG inside of the <code>k-icon</code> to be the fallback if one is not found that matches the provided name or source. Otherwise a <k-icon></k-icon> will be the fallback icon.</p>
48
+ <div class="row -mx mb">
49
+ <div class="col d-span-6 m-span-12 px">
50
+ <k-card label="HTML">
51
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-icon</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"invalid"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">k-icon</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">k-icon</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"invalid"</span>&gt;</span><br /> <span class="hljs-tag">&lt;<span class="hljs-name">svg</span> <span class="hljs-attr">xmlns</span>=<span class="hljs-string">"http://www.w3.org/2000/svg"</span> <span class="hljs-attr">viewBox</span>=<span class="hljs-string">"0 -960 960 960"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">path</span> <span class="hljs-attr">fill</span>=<span class="hljs-string">"currentColor"</span> <span class="hljs-attr">d</span>=<span class="hljs-string">"M240-280h200v-80H240v80Zm400 0h80v-80h-80v80ZM240-440h200v-80H240v80Zm400 0h80v-240h-80v240ZM240-600h200v-80H240v80Zm-80 480q-33 0-56.5-23.5T80-200v-560q0-33 23.5-56.5T160-840h640q33 0 56.5 23.5T880-760v560q0 33-23.5 56.5T800-120H160Zm0-80h640v-560H160v560Zm0 0v-560 560Z"</span>/&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">svg</span>&gt;</span><br /><span class="hljs-tag">&lt;/<span class="hljs-name">k-icon</span>&gt;</span></code></pre>
52
+ </k-card>
53
+ </div>
54
+ <div class="col d-span-6 m-span-12 px">
55
+ <k-card label="Output*">
56
+ <k-icon name="invalid"></k-icon>
57
+ <k-icon name="invalid">
58
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currentColor" d="M240-280h200v-80H240v80Zm400 0h80v-80h-80v80ZM240-440h200v-80H240v80Zm400 0h80v-240h-80v240ZM240-600h200v-80H240v80Zm-80 480q-33 0-56.5-23.5T80-200v-560q0-33 23.5-56.5T160-840h640q33 0 56.5 23.5T880-760v560q0 33-23.5 56.5T800-120H160Zm0-80h640v-560H160v560Zm0 0v-560 560Z"/></svg>
59
+ </k-icon>
60
+ </k-card>
61
+ </div>
62
+ </div>
63
+
46
64
  <h3>Changing the icon directory location</h3>
47
65
  <p>To change the location of the directory holding the icons import the <code>Icon</code> class, and set the static member <code>pathToIcons</code> to point to the correct location, do this before icons are loaded (for example in the head of the document).</p>
48
66
  <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"module"</span>&gt;</span><span class="javascript"><br /> <span class="hljs-keyword">import</span> Icon <span class="hljs-keyword">from</span> <span class="hljs-string">'/kempo/components/Icon.js'</span>;<br /> Icon.pathToIcons = <span class="hljs-string">'./pathTo/icons'</span>;<br /></span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span></code></pre>
@@ -63,10 +81,6 @@
63
81
  </div>
64
82
  </main>
65
83
  <div style="height:33vh"></div>
66
- <script type="module">
67
- import Icon from '../kempo/components/Icon.js';
68
- Icon.pathToIcons = '../kempo/icons';
69
- </script>
70
84
  <script type="module" src="../kempo/components/Import.js"></script>
71
85
  <script type="module" src="../kempo/components/Card.js"></script>
72
86
  </body>
@@ -24,10 +24,6 @@
24
24
  </k-card>
25
25
  </main>
26
26
  <div style="height:33vh"></div>
27
- <script type="module">
28
- import Icon from '../kempo/components/Icon.js';
29
- Icon.pathToIcons = '../kempo/icons';
30
- </script>
31
27
  <script type="module" src="../kempo/components/Import.js"></script>
32
28
  <script type="module" src="../kempo/components/Card.js"></script>
33
29
  </body>
@@ -41,10 +41,6 @@
41
41
  <p>This class <b class="tc-danger">can not</b> be instatiated directly, but rather <b class="tc-success">should be</b> extended, optionally passing in the <a href="https://developer.mozilla.org/en-US/docs/Web/API/Element/attachShadow#options" target="_blank">shadowOptions</a>.</p>
42
42
 
43
43
  </main>
44
- <script type="module">
45
- import Icon from '../kempo/components/Icon.js';
46
- Icon.pathToIcons = '../kempo/icons';
47
- </script>
48
44
  <script type="module" src="../kempo/components/Import.js"></script>
49
45
  </body>
50
46
  </html>
@@ -97,10 +97,6 @@
97
97
 
98
98
  </main>
99
99
  <div style="height:33vh"></div>
100
- <script type="module">
101
- import Icon from '../kempo/components/Icon.js';
102
- Icon.pathToIcons = '../kempo/icons';
103
- </script>
104
100
  <script type="module" src="../kempo/components/Import.js"></script>
105
101
  <script type="module" src="../kempo/components/Resize.js"></script>
106
102
  </body>
@@ -6,10 +6,6 @@
6
6
  <title>ShowMore - Components - Kempo Docs - A Web Components Solution</title>
7
7
  <link rel="stylesheet" href="../kempo/kempo-vars.css" /><link rel="stylesheet" href="../kempo/kempo-styles.css" />
8
8
  <link rel="stylesheet" href="../kempo/kempo-hljs.css" />
9
- <script type="module">
10
- import Icon from '../kempo/components/Icon.js';
11
- Icon.pathToIcons = '../kempo/icons';
12
- </script>
13
9
  </head>
14
10
  <body>
15
11
  <k-import src="../nav-1.inc.html"></k-import>
@@ -87,10 +87,6 @@
87
87
  </div>
88
88
  </main>
89
89
  <div style="height:33vh"></div>
90
- <script type="module">
91
- import Icon from '../kempo/components/Icon.js';
92
- Icon.pathToIcons = '../kempo/icons';
93
- </script>
94
90
  <script type="module" src="../kempo/components/Import.js"></script>
95
91
  <script type="module" src="../kempo/components/SideMenu.js"></script>
96
92
  </body>
@@ -59,10 +59,6 @@
59
59
 
60
60
  </main>
61
61
  <div style="height:33vh"></div>
62
- <script type="module">
63
- import Icon from '../kempo/components/Icon.js';
64
- Icon.pathToIcons = '../kempo/icons';
65
- </script>
66
62
  <script type="module" src="../kempo/components/Import.js"></script>
67
63
  <script type="module" src="../kempo/components/Card.js"></script>
68
64
  <script type="module" src="../kempo/components/Split.js"></script>
@@ -23,10 +23,6 @@
23
23
  </k-tabs>
24
24
  </main>
25
25
  <div style="height:33vh"></div>
26
- <script type="module">
27
- import Icon from '../kempo/components/Icon.js';
28
- Icon.pathToIcons = '../kempo/icons';
29
- </script>
30
26
  <script type="module" src="../kempo/components/Import.js"></script>
31
27
  <script type="module" src="../kempo/components/Tabs.js"></script>
32
28
  </body>
@@ -0,0 +1,152 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Toggle - Components - Kempo Docs - A Web Components Solution</title>
7
+ <link rel="stylesheet" href="../kempo/kempo-vars.css" /><link rel="stylesheet" href="../kempo/kempo-styles.css" />
8
+ <link rel="stylesheet" href="../kempo/kempo-hljs.css" />
9
+ </head>
10
+ <body>
11
+ <k-import src="../nav-1.inc.html"></k-import>
12
+ <h1 class="ta-center">Toggle</h1>
13
+ <main>
14
+ <details
15
+ class="b r mb"
16
+ >
17
+ <summary class="p">Table of Contents</summary>
18
+ <ul>
19
+ <li><a href="#basicUsage">Basic Usage</a></li>
20
+ <li><a href="#onByDefault">On By Default</a></li>
21
+ <li><a href="#customStyles">Custom Styles</a></li>
22
+ <li><a href="#javascriptUsage">JavaScript Usage</a></li>
23
+ <li>
24
+ <a href="#classReference">Class Reference</a>
25
+ <ul>
26
+ <li><a href="#constructor">Constructor</a></li>
27
+ <li><a href="#requirements">Requirements</a></li>
28
+ <li><a href="#attributes">Attributes</a></li>
29
+ <li><a href="#properties">Properties</a></li>
30
+ <li><a href="#methods">Methods</a></li>
31
+ </ul>
32
+ </li>
33
+ </ul>
34
+ </details>
35
+
36
+ <h3 id="basicUsage">Basic Usage</h3>
37
+ <div class="row -mx">
38
+ <div class="col m-span-12 px">
39
+ <k-card label="HTML">
40
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-toggle</span>&gt;</span>Toggle Me<span class="hljs-tag">&lt;/<span class="hljs-name">k-toggle</span>&gt;</span></code></pre>
41
+ </k-card>
42
+ </div>
43
+ <div class="col m-span-12 px">
44
+ <k-card label="Output">
45
+ <k-toggle>Toggle Me</k-toggle>
46
+ </k-card>
47
+ </div>
48
+ </div>
49
+
50
+ <h3 id="onByDefault">On By Default</h3>
51
+ <div class="row -mx">
52
+ <div class="col m-span-12 px">
53
+ <k-card label="HTML">
54
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-toggle</span> <span class="hljs-attr">value</span>=<span class="hljs-string">"true"</span>&gt;</span>Toggle Me<span class="hljs-tag">&lt;/<span class="hljs-name">k-toggle</span>&gt;</span></code></pre>
55
+ </k-card>
56
+ </div>
57
+ <div class="col m-span-12 px">
58
+ <k-card label="Output">
59
+ <k-toggle value="true">Toggle Me</k-toggle>
60
+ </k-card>
61
+ </div>
62
+ </div>
63
+
64
+ <h3 id="customStyles">Custom Styles</h3>
65
+ <div class="row -mx">
66
+ <div class="col m-span-12 px">
67
+ <k-card label="HTML">
68
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-toggle</span> <br /> <span class="hljs-attr">style</span>=<span class="hljs-string">"<br /> --switch_height: 3rem;<br /> --switch_width: 5rem;<br /> --switch_border: none;<br /> --switch_background__off: var(--c_danger);<br /> --switch_background__on: var(--c_success);<br /> --handle_size__off: 2rem;<br /> --handle_size__on: calc(3rem - 2px);<br /> --handle_border: none;<br /> --handle_background__off: #ddd;<br /> --handle_background__on: white;<br /> "</span><br />&gt;</span>Toggle Me<span class="hljs-tag">&lt;/<span class="hljs-name">k-toggle</span>&gt;</span></code></pre>
69
+ </k-card>
70
+ </div>
71
+ <div class="col m-span-12 px">
72
+ <k-card label="Output">
73
+ <k-toggle
74
+ style="
75
+ --switch_height: 3rem;
76
+ --switch_width: 5rem;
77
+ --switch_border: none;
78
+ --switch_background__off: var(--c_danger);
79
+ --switch_background__on: var(--c_success);
80
+ --handle_size__off: 2rem;
81
+ --handle_size__on: calc(3rem - 2px);
82
+ --handle_border: none;
83
+ --handle_background__off: #ddd;
84
+ --handle_background__on: white;
85
+ "
86
+ >Toggle Me</k-toggle>
87
+ </k-card>
88
+ </div>
89
+ </div>
90
+
91
+ <h3 id="javascriptUsage">JavaScript Usage</h3>
92
+ <div class="row -mx">
93
+ <div class="col m-span-12 px">
94
+ <k-card label="HTML">
95
+ <pre><code class="hljs xml"><span class="hljs-tag">&lt;<span class="hljs-name">k-toggle</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"tog1"</span>&gt;</span>Toggle Me<span class="hljs-tag">&lt;/<span class="hljs-name">k-toggle</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"turnOn"</span>&gt;</span>Turn On<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"turnOff"</span>&gt;</span>Turn Off<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"toggle"</span>&gt;</span>Toggle<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span><br /><span class="hljs-tag">&lt;<span class="hljs-name">script</span>&gt;</span><span class="javascript"><br /> <span class="hljs-keyword">const</span> $tog1 = <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'tog1'</span>);<br /> <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'turnOn'</span>).addEventListener(<span class="hljs-string">'click'</span>, ()=&gt;{<br /> $tog1.on();<br /> });<br /> <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'turnOff'</span>).addEventListener(<span class="hljs-string">'click'</span>, ()=&gt;{<br /> $tog1.off();<br /> });<br /> <span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">'toggle'</span>).addEventListener(<span class="hljs-string">'click'</span>, ()=&gt;{<br /> $tog1.toggle();<br /> });<br /></span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span></code></pre>
96
+ </k-card>
97
+ </div>
98
+ <div class="col m-span-12 px">
99
+ <k-card label="Output">
100
+ <k-toggle id="tog1">Toggle Me</k-toggle>
101
+ <button id="turnOn">Turn On</button>
102
+ <button id="turnOff">Turn Off</button>
103
+ <button id="toggle">Toggle</button>
104
+ <script>
105
+ const $tog1 = document.getElementById('tog1');
106
+ document.getElementById('turnOn').addEventListener('click', ()=>{
107
+ $tog1.on();
108
+ });
109
+ document.getElementById('turnOff').addEventListener('click', ()=>{
110
+ $tog1.off();
111
+ });
112
+ document.getElementById('toggle').addEventListener('click', ()=>{
113
+ $tog1.toggle();
114
+ });
115
+ </script>
116
+ </k-card>
117
+ </div>
118
+ </div>
119
+
120
+ <h2 id="classReference">Class Reference</h2>
121
+
122
+ <h3 id="constructor">Constructor</h3>
123
+ <h6>Extends <a href="./component.html">Component</a></h6>
124
+ <h5>
125
+ <code>new Toggle()</code>
126
+ </h5>
127
+ <pre><code class="hljs javascript"><span class="hljs-keyword">import</span> Toggle <span class="hljs-keyword">from</span> <span class="hljs-string">'kempo'</span>;<br /><span class="hljs-keyword">const</span> myToggle = <span class="hljs-keyword">new</span> Toggle();<br /><span class="hljs-built_in">document</span>.body.appendChild(myToggle);</code></pre>
128
+
129
+ <h3 id="attributes">Attributes</h3>
130
+
131
+ <h5><code>value</code></h5>
132
+ <p>A boolean that indicates if the switch is on or off, the default value is <code>false</code>.</p>
133
+ <pre><code class="hljs javascript"><span class="hljs-built_in">console</span>.log(myToggle.value); <span class="hljs-comment">// true or false</span></code></pre>
134
+ <p>This can be set directly, but it is not recommended as it only triggers the a <code>change</code> event and not a <code>on</code>, <code>off</code> or <code>toggle</code> event as the methods do, so the methods are preferrable.</p>
135
+
136
+ <h3 id="methods">Methods</h3>
137
+ <h5><code>on(): <i>undefined</i></code></h5>
138
+ <p>Set's the <code>value</code> to <code>true</code>, dispatches a <code><i>change</i></code> and an <code><i>on</i></code> event. The switch visual changes to the <b>on</b> state.</p>
139
+
140
+ <h5><code>off(): <i>undefined</i></code></h5>
141
+ <p>Set's the <code>value</code> to <code>false</code>, dispatches a <code><i>change</i></code> and an <code><i>off</i></code> event. The switch visual changes to the <b>off</b> state.</p>
142
+
143
+ <h5><code>toggle(): <i>undefined</i></code></h5>
144
+ <p>Negates the <code>value</code>, if it is <code>true</code> it is now set to <code>false</code>, but if it is <code>false</code> it is now set to <code>true</code>. It also dispatches dispatches a <code><i>change</i></code> and an <code><i>on</i></code> or <code><i>off</i></code> event. The switch visual changes to the oposite state.</p>
145
+
146
+
147
+ </main>
148
+ <div style="height:33vh"></div>
149
+ <script type="module" src="../kempo/components/Import.js"></script>
150
+ <script type="module" src="../kempo/components/Toggle.js"></script>
151
+ </body>
152
+ </html>
@@ -32,10 +32,6 @@ document.getElementById('hello').addEventListener('click', () => {
32
32
  </k-web-snippet-editor>
33
33
  </main>
34
34
  <div style="height:33vh"></div>
35
- <script type="module">
36
- import Icon from '../kempo/components/Icon.js';
37
- Icon.pathToIcons = '../kempo/icons';
38
- </script>
39
35
  <script type="module" src="../kempo/components/Import.js"></script>
40
36
  <script type="module" src="../kempo/components/WebSnippetEditor.js"></script>
41
37
  </body>
package/docs/index.html CHANGED
@@ -8,10 +8,6 @@
8
8
  </head>
9
9
  <body>
10
10
  <k-import src="./nav.inc.html"></k-import>
11
- <script type="module">
12
- import Icon from './kempo/components/Icon.js';
13
- Icon.pathToIcons = './kempo/icons';
14
- </script>
15
11
  <script type="module" src="./kempo/components/Import.js"></script>
16
12
  </body>
17
13
  </html>
@@ -1 +1 @@
1
- import Component from"./Component.js";import"./FocusCapture.js";import"./Icon.js";import{firstFocusable,onEvent,offEvent,dispatchEvent}from"../utils/element.js";export default class Dialog extends Component{constructor({opened:n=!1,closeBtn:e=!0,overlayClose:t=!0,confirmText:o="",confirmClasses:i="success ml",confirmAction:s=(()=>{}),cancelText:a="",cancelClasses:c="",cancelAction:l=(()=>{}),closeCallback:r=(()=>{})}={}){super(),this.registerAttributes({opened:n,closeBtn:e,overlayClose:t,confirmText:o,confirmClasses:i,cancelText:a,cancelClasses:c}),this.registerProps({confirmAction:s,cancelAction:l,closeCallback:r,previousFocus:null,_clickHandler:n=>{const{target:{id:e}}=n;"overlay"==e&&this.overlayClose||"close"==e?this.close():"cancel"==e?(this.cancelAction(n),n.defaultPrevented||this.close()):"confirm"==e&&(this.confirmAction(n),n.defaultPrevented||this.close())},_keydownHandler:({keyCode:n})=>{27===n&&this.close()},_hasTitle:()=>!!this.querySelector('[slot="title"]')})}connectedCallback(){super.connectedCallback(),onEvent(this.shadowRoot,"click",this._clickHandler)}disconnectedCallback(){super.connectedCallback(),offEvent(this.shadowRoot,"click",this._clickHandler),offEvent(window,"keydown",this._keydownHandler)}attributeChangedCallback(n,e,t){super.attributeChangedCallback(n,e,t),"opened"===name&&dispatchEvent(this,t?"opened":"closed")}open(){this.opened=!0;const n=this.shadowRoot.querySelector("[autofocus]")||firstFocusable(this.shadowRoot);n&&n.focus(),onEvent(window,"keydown",this._keydownHandler)}close(){this.opened=!1,this.blur(),this.closeCallback(),offEvent(window,"keydown",this._keydownHandler)}toggle(){this.opened?this.close():this.open()}focus(){const n=firstFocusable(this.shadowRoot);n&&(this.previousFocus=document.activeElement,n.focus())}blur(){this.previousFocus&&this.previousFocus.focus()}get shadowTemplate(){return`\n <k-focus-capture>\n <button id="overlay" aria-label="Close the Dialog"></button>\n <div id="wrapper">\n <div\n id="dialog"\n role="dialog"\n aria-modal="true"\n aria-labelledby="title"\n >\n <div\n id="header"\n class="${this._hasTitle()?"has-title":""}"\n >\n <div\n id="title"\n ><slot name="title"></slot></div>\n ${this.renderIf(this.closeBtn,'\n <button\n id="close"\n >\n <k-icon name="close"></k-icon>\n </button>\n ')}\n </div>\n <div id="body">\n ${super.shadowTemplate}\n </div>\n ${this.renderIf(this.cancelText||this.confirmText,`\n <div id="footer">\n ${this.renderIf(this.cancelText,`\n <button id="cancel" class="${this.cancelClasses}">\n ${this.cancelText}\n </button>\n `)}\n ${this.renderIf(this.confirmText,`\n <button id="confirm" class="${this.confirmClasses}">\n ${this.confirmText}\n </button>\n `)}\n </div>\n `)}\n </div>\n </div>\n </k-focus-capture>\n `}get shadowStyles(){return`\n ${super.shadowStyles}\n :host {\n display: inline;\n height: 0;\n width: 0;\n }\n :host(:not([opened])){\n display: none;\n }\n #overlay {\n position: fixed;\n width: 100vw;\n height: 100vh;\n top: 0;\n left: 0;\n background-color: var(--c_overlay);\n z-index: 100;\n border: 0px solid transparent;\n box-shadow: 0 0 0 transparent;\n }\n #wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n position: fixed;\n width: 100vw;\n height: 100vh;\n top: 0;\n left: 0;\n z-index: 101;\n pointer-events: none;\n }\n #dialog {\n display: flex;\n flex-direction: column;\n min-width: var(--min_width, 20rem);\n width: var(--width, fit-content);\n max-width: var(--max_width, calc(100vw - 2rem));\n min-height: var(--min_height, 12rem);\n height: var(--height, fit-content);\n max-height: var(--max_height, calc(100vh - 2rem));\n background-color: var(--c_bg);\n box-shadow: var(--drop_shadow);\n border-radius: var(--radius);\n pointer-events: all;\n }\n #header {\n display: flex;\n align-items: center;\n }\n #header.has-title {\n border-bottom: 1px solid var(--c_border);\n }\n #title {\n flex: 1 1 auto;\n }\n #close {\n border: 0px;\n background: transparent;\n box-shadow: 0 0 0 transparent;\n color: var(--tc);\n }\n #close k-icon {\n pointer-events: none;\n }\n #body {\n flex: 1 1 auto;\n }\n #footer {\n display: flex;\n justify-content: flex-end;\n padding: var(--spacer_h);\n }\n `}static renderOnChange=["opened","closeBtn","overlayClose","title","confirmText","cancelText"];static create(n="",e={}){const t=new Dialog({opened:!0,...e});onEvent(t,"close",t.remove),n instanceof HTMLElement||n instanceof DocumentFragment?t.appendChild(n):n instanceof NodeList?n.forEach((n=>t.appendChild(n))):t.innerHTML=n,document.body.appendChild(t)}static confirm(n,e,t){Dialog.create(`\n <h5 slot="title" class="pyh px m0">Confirm Event Deletion</h5>\n <p class="p">${n}</p>\n `,{...t,closeBtn:!1,overlayClose:!1,confirmText:"Yes",confirmClasses:"success ml",confirmAction:()=>e(!0),cancelText:"No",cancelClasses:"danger",cancelAction:()=>e(!1)})}}window.customElements.define("k-dialog",Dialog);
1
+ import Component from"./Component.js";import"./FocusCapture.js";import"./Icon.js";import{firstFocusable,onEvent,offEvent,dispatchEvent}from"../utils/element.js";export default class Dialog extends Component{constructor({opened:n=!1,closeBtn:e=!0,overlayClose:t=!0,confirmText:o="",confirmClasses:i="success ml",confirmAction:s=(()=>{}),cancelText:a="",cancelClasses:c="",cancelAction:l=(()=>{}),closeCallback:r=(()=>{})}={}){super(),this.registerAttributes({opened:n,closeBtn:e,overlayClose:t,confirmText:o,confirmClasses:i,cancelText:a,cancelClasses:c}),this.registerProps({confirmAction:s,cancelAction:l,closeCallback:r,previousFocus:null,_clickHandler:n=>{const{target:{id:e}}=n;"overlay"==e&&this.overlayClose||"close"==e?this.close():"cancel"==e?(this.cancelAction(n),n.defaultPrevented||this.close()):"confirm"==e&&(this.confirmAction(n),n.defaultPrevented||this.close())},_keydownHandler:({keyCode:n})=>{27===n&&this.close()},_hasTitle:()=>!!this.querySelector('[slot="title"]')})}connectedCallback(){super.connectedCallback(),onEvent(this.shadowRoot,"click",this._clickHandler)}disconnectedCallback(){super.connectedCallback(),offEvent(this.shadowRoot,"click",this._clickHandler),offEvent(window,"keydown",this._keydownHandler)}attributeChangedCallback(n,e,t){super.attributeChangedCallback(n,e,t),"opened"===name&&dispatchEvent(this,t?"opened":"closed")}open(){this.opened=!0;const n=this.shadowRoot.querySelector("[autofocus]")||firstFocusable(this.shadowRoot);n&&n.focus(),onEvent(window,"keydown",this._keydownHandler)}close(){this.opened=!1,this.blur(),this.closeCallback(),offEvent(window,"keydown",this._keydownHandler)}toggle(){this.opened?this.close():this.open()}focus(){const n=firstFocusable(this.shadowRoot);n&&(this.previousFocus=document.activeElement,n.focus())}blur(){this.previousFocus&&this.previousFocus.focus()}get shadowTemplate(){return`\n <k-focus-capture>\n <button id="overlay" aria-label="Close the Dialog"></button>\n <div id="wrapper">\n <div\n id="dialog"\n role="dialog"\n aria-modal="true"\n aria-labelledby="title"\n >\n <div\n id="header"\n class="${this._hasTitle()?"has-title":""}"\n >\n <div\n id="title"\n ><slot name="title"></slot></div>\n ${this.renderIf(this.closeBtn,'\n <button\n id="close"\n >\n <k-icon name="close"></k-icon>\n </button>\n ')}\n </div>\n <div id="body">\n ${super.shadowTemplate}\n </div>\n ${this.renderIf(this.cancelText||this.confirmText,`\n <div id="footer">\n ${this.renderIf(this.cancelText,`\n <button id="cancel" class="${this.cancelClasses}">\n ${this.cancelText}\n </button>\n `)}\n ${this.renderIf(this.confirmText,`\n <button id="confirm" class="${this.confirmClasses}">\n ${this.confirmText}\n </button>\n `)}\n </div>\n `)}\n </div>\n </div>\n </k-focus-capture>\n `}get shadowStyles(){return`\n ${super.shadowStyles}\n :host {\n display: inline;\n height: 0;\n width: 0;\n }\n :host(:not([opened])){\n display: none;\n }\n #overlay {\n position: fixed;\n width: 100vw;\n height: 100vh;\n top: 0;\n left: 0;\n background-color: var(--c_overlay);\n z-index: 100;\n border: 0px solid transparent;\n box-shadow: 0 0 0 transparent;\n }\n #wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n position: fixed;\n width: 100vw;\n height: 100vh;\n top: 0;\n left: 0;\n z-index: 101;\n pointer-events: none;\n }\n #dialog {\n display: flex;\n flex-direction: column;\n min-width: var(--min_width, 20rem);\n width: var(--width, fit-content);\n max-width: var(--max_width, calc(100vw - 2rem));\n min-height: var(--min_height, 12rem);\n height: var(--height, fit-content);\n max-height: var(--max_height, calc(100vh - 2rem));\n background-color: var(--c_bg);\n box-shadow: var(--drop_shadow);\n border-radius: var(--radius);\n pointer-events: all;\n }\n #header {\n display: flex;\n align-items: center;\n }\n #header.has-title {\n border-bottom: 1px solid var(--c_border);\n }\n #title {\n flex: 1 1 auto;\n }\n #close {\n border: 0px;\n background: transparent;\n box-shadow: 0 0 0 transparent;\n color: var(--tc);\n }\n #close k-icon {\n pointer-events: none;\n }\n #body {\n flex: 1 1 auto;\n }\n #footer {\n display: flex;\n justify-content: flex-end;\n padding: var(--spacer_h);\n }\n `}static renderOnChange=["opened","closeBtn","overlayClose","title","confirmText","cancelText"];static create(n="",e={}){const t=new Dialog({opened:!0,...e});onEvent(t,"close",t.remove),n instanceof HTMLElement||n instanceof DocumentFragment?t.appendChild(n):n instanceof NodeList?n.forEach((n=>t.appendChild(n))):t.innerHTML=n,document.body.appendChild(t)}static confirm(n,e,t={title:"Confirm"}){Dialog.create(`\n <h5 slot="title" class="pyh px m0 tc-danger">${t.title}</h5>\n <p class="p">${n}</p>\n `,{...t,closeBtn:!1,overlayClose:!1,confirmText:"Yes",confirmClasses:"success ml",confirmAction:()=>e(!0),cancelText:"No",cancelClasses:"danger",cancelAction:()=>e(!1)})}static error(n,e,t={title:"Error"}){Dialog.create(`\n <h5 slot="title" class="pyh px m0">${t.title}</h5>\n <p class="p">${n}</p>\n `,{...t,cancelText:"Ok"})}}window.customElements.define("k-dialog",Dialog);
@@ -1 +1 @@
1
- import Component from"./Component.js";export default class Icon extends Component{constructor(){super(),this.registerAttributes({src:"",name:""})}async render(t){return!!await super.render(t)&&(this.src?(this.innerHTML=await(await fetch(this.src)).text(),this.fixSVG()):this.name?(this.innerHTML=await(await fetch(`${Icon.pathToIcons}/${this.name}.svg`)).text(),this.fixSVG()):(this.rendered=!1,this.innerHTML=""),!0)}attributeChangedCallback(t,e,n){["src","name"].includes(t)&&this.render(!0)}fixSVG(){const t=this.querySelector("svg");t.removeAttribute("width"),t.removeAttribute("height"),t.querySelectorAll("path, rect, circle").forEach((t=>{t.setAttribute("fill","currentColor")}))}get shadowStyles(){return"\n :host {\n display: inline-block;\n vertical-align: bottom;\n }\n ::slotted(svg){\n height: 1.35em;\n vertical-align: middle;\n }\n "}static observedAttributes=["name","src"];static pathToIcons="/icons"}window.customElements.define("k-icon",Icon);
1
+ import Component from"./Component.js";export default class Icon extends Component{constructor(){super(),this.registerAttributes({src:"",name:""})}async render(t){if(await super.render(t)){if(this.src){const t=await fetch(this.src);200===t.status?(this.innerHTML=await t.text(),this.fixSVG()):this.innerHTML.length||(this.innerHTML=Icon.fallback)}else if(this.name){const t=await fetch(`${Icon.pathToIcons}/${this.name}.svg`);200===t.status?(this.innerHTML=await t.text(),this.fixSVG()):this.innerHTML.length||(this.innerHTML=Icon.fallback)}else this.rendered=!1,this.innerHTML.length||(this.innerHTML=Icon.fallback);return!0}return!1}attributeChangedCallback(t,e,n){["src","name"].includes(t)&&this.render(!0)}fixSVG(){const t=this.querySelector("svg");t.removeAttribute("width"),t.removeAttribute("height"),t.querySelectorAll("path, rect, circle").forEach((t=>{t.setAttribute("fill","currentColor")}))}get shadowStyles(){return"\n :host {\n display: inline-block;\n vertical-align: bottom;\n }\n ::slotted(svg){\n height: 1.35em;\n vertical-align: middle;\n }\n "}static observedAttributes=["name","src"];static pathToIcons="/icons";static fallback='\n <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path fill="currnetColor" d="M480-79q-16 0-30.5-6T423-102L102-423q-11-12-17-26.5T79-480q0-16 6-31t17-26l321-321q12-12 26.5-17.5T480-881q16 0 31 5.5t26 17.5l321 321q12 11 17.5 26t5.5 31q0 16-5.5 30.5T858-423L537-102q-11 11-26 17t-31 6Zm0-80 321-321-321-321-321 321 321 321Zm-40-281h80v-240h-80v240Zm40 120q17 0 28.5-11.5T520-360q0-17-11.5-28.5T480-400q-17 0-28.5 11.5T440-360q0 17 11.5 28.5T480-320Zm0-160Z"/></svg>\n '}window.customElements.define("k-icon",Icon);
@@ -0,0 +1 @@
1
+ import Component from"./Component.js";import{onEvent,offEvent,dispatchEvent}from"../utils/element.js";const clickHandler=Symbol(),keyDownHandler=Symbol();export default class Toggle extends Component{constructor(){super(),this[clickHandler]=()=>{this.toggle()},this[keyDownHandler]=({code:n})=>{["Space","Enter"].includes(n)&&this.toggle()},this.registerAttributes({value:!1}),this.tabIndex=0}connectedCallback(){super.connectedCallback(),onEvent(this,"click",this[clickHandler]),onEvent(this,"keydown",this[keyDownHandler])}disconnectedCallback(){super.disconnectedCallback(),offEvent(this,"click",this[clickHandler]),offEvent(this,"keydown",this[keyDownHandler])}attributeChangedCallback(n,e,a){"value"===n&&dispatchEvent(this,"change",{value:a})}on(){this.value=!0,dispatchEvent(this,"on",{value:!0})}off(){this.value=!1,dispatchEvent(this,"on",{value:!1})}toggle(){this.value?this.off():this.on(),dispatchEvent(this,"toggle",{value:this.value})}get shadowTemplate(){return`\n <div id="switch">\n <div id="handle"></div>\n </div>\n <label id="label">\n ${super.shadowTemplate}\n </label>\n `}get shadowStyles(){return`\n ${super.shadowStyles}\n :host {\n --switch_height: 2rem;\n --switch_width: 3rem;\n --switch_border: 1px solid var(--c_border);\n --switch_background__off: var(--c_bg__alt);\n --switch_background__on: var(--c_success);\n --handle_size__off: 1rem;\n --handle_size__on: 1.5rem;\n --handle_border: 1px solid var(--c_border);\n --handle_background__off: var(--c_border);\n --handle_background__on: white;\n\n display: flex;\n align-items: center;\n cursor: pointer;\n margin-bottom: var(--spacer);\n border-radius: 999rem;\n }\n #switch {\n display: flex;\n align-items: center;\n width: var(--switch_width);\n height: var(--switch_height);\n border: var(--switch_border);\n background: var(--switch_background__off);\n border-radius: 999rem;\n margin-right: var(--spacer);\n }\n #handle {\n --margin: calc( (var(--switch_height) - var(--handle_size__off)) / 2);\n width: var(--handle_size__off);\n height: var(--handle_size__off);\n border: var(--handle_border);\n background: var(--handle_background__off);\n border-radius: 999rem;\n transform: translateX(var(--margin));\n transition: width var(--animation_ms, 256ms), height var(--animation_ms, 256ms), transform var(--animation_ms, 256ms);\n }\n :host([value="true"]) #switch {\n background: var(--switch_background__on);\n }\n :host([value="true"]) #handle {\n --m: calc( (var(--switch_height) - var(--handle_size__on)) / 2);\n --d: calc( var(--switch_width) - var(--handle_size__on) - var(--m));\n width: var(--handle_size__on);\n height: var(--handle_size__on);\n background: var(--handle_background__on);\n transform: translateX(var(--d));\n }\n #label {\n display: block;\n flex: 1 1 auto;\n padding: 0;\n }\n `}static observedAttributes=[...Component.observedAttributes,"value"]}window.customElements.define("k-toggle",Toggle);
@@ -1 +1 @@
1
- import Card from"./components/Card.js";import CodeEditor from"./components/CodeEditor.js";import Component from"./components/Component.js";import Dialog from"./components/Dialog.js";import FocusCapture from"./components/FocusCapture.js";import Icon from"./components/Icon.js";import Import from"./components/Import.js";import LazyComponent from"./components/LazyComponent.js";import ReactiveComponent from"./components/ReactiveComponent.js";import ReactiveLazyComponent from"./components/ReactiveLazyComponent.js";import Resize from"./components/Resize.js";import Search from"./components/Search.js";import ShowMore from"./components/ShowMore.js";import SideMenu from"./components/SideMenu.js";import Split from"./components/Split.js";import Tabs from"./components/Tabs.js";import ThemeSwitcher from"./components/ThemeSwitcher.js";import Timestamp from"./components/Timestamp.js";import WebSnippetEditor from"./components/WebSnippetEditor.js";import cli from"./utils/cli.js";import cookie from"./utils/cookie.js";import debounce from"./utils/debounce.js";import drag from"./utils/drag.js";import element from"./utils/element.js";import formatTimestamp from"./utils/formatTimestamp.js";import fuzzyMatch from"./utils/fuzzyMatch.js";import getPreferredTheme from"./utils/getPreferredTheme.js";import loadCss from"./utils/loadCss.js";import loadScript from"./utils/loadScript.js";import object from"./utils/object.js";import string from"./utils/string.js";import toFunction from"./utils/toFunction.js";import type from"./utils/type.js";import waitFrames from"./utils/waitFrames.js";export default{Card:Card,CodeEditor:CodeEditor,Component:Component,Dialog:Dialog,FocusCapture:FocusCapture,Icon:Icon,Import:Import,LazyComponent:LazyComponent,ReactiveComponent:ReactiveComponent,ReactiveLazyComponent:ReactiveLazyComponent,Resize:Resize,Search:Search,ShowMore:ShowMore,SideMenu:SideMenu,Split:Split,Tabs:Tabs,ThemeSwitcher:ThemeSwitcher,Timestamp:Timestamp,WebSnippetEditor:WebSnippetEditor,cli:cli,cookie:cookie,debounce:debounce,drag:drag,element:element,formatTimestamp:formatTimestamp,fuzzyMatch:fuzzyMatch,getPreferredTheme:getPreferredTheme,loadCss:loadCss,loadScript:loadScript,object:object,string:string,toFunction:toFunction,type:type,waitFrames:waitFrames};
1
+ import Card from"./components/Card.js";import CodeEditor from"./components/CodeEditor.js";import Component from"./components/Component.js";import Dialog from"./components/Dialog.js";import FocusCapture from"./components/FocusCapture.js";import Icon from"./components/Icon.js";import Import from"./components/Import.js";import LazyComponent from"./components/LazyComponent.js";import ReactiveComponent from"./components/ReactiveComponent.js";import ReactiveLazyComponent from"./components/ReactiveLazyComponent.js";import Resize from"./components/Resize.js";import Search from"./components/Search.js";import ShowMore from"./components/ShowMore.js";import SideMenu from"./components/SideMenu.js";import Split from"./components/Split.js";import Tabs from"./components/Tabs.js";import ThemeSwitcher from"./components/ThemeSwitcher.js";import Timestamp from"./components/Timestamp.js";import Toggle from"./components/Toggle.js";import WebSnippetEditor from"./components/WebSnippetEditor.js";import cli from"./utils/cli.js";import cookie from"./utils/cookie.js";import debounce from"./utils/debounce.js";import drag from"./utils/drag.js";import element from"./utils/element.js";import formatTimestamp from"./utils/formatTimestamp.js";import fuzzyMatch from"./utils/fuzzyMatch.js";import getPreferredTheme from"./utils/getPreferredTheme.js";import loadCss from"./utils/loadCss.js";import loadScript from"./utils/loadScript.js";import object from"./utils/object.js";import string from"./utils/string.js";import toFunction from"./utils/toFunction.js";import type from"./utils/type.js";import waitFrames from"./utils/waitFrames.js";export default{Card:Card,CodeEditor:CodeEditor,Component:Component,Dialog:Dialog,FocusCapture:FocusCapture,Icon:Icon,Import:Import,LazyComponent:LazyComponent,ReactiveComponent:ReactiveComponent,ReactiveLazyComponent:ReactiveLazyComponent,Resize:Resize,Search:Search,ShowMore:ShowMore,SideMenu:SideMenu,Split:Split,Tabs:Tabs,ThemeSwitcher:ThemeSwitcher,Timestamp:Timestamp,Toggle:Toggle,WebSnippetEditor:WebSnippetEditor,cli:cli,cookie:cookie,debounce:debounce,drag:drag,element:element,formatTimestamp:formatTimestamp,fuzzyMatch:fuzzyMatch,getPreferredTheme:getPreferredTheme,loadCss:loadCss,loadScript:loadScript,object:object,string:string,toFunction:toFunction,type:type,waitFrames:waitFrames};
@@ -1 +1 @@
1
- const args={};let win={};"undefined"!=typeof window?win=window:"undefined"!=typeof global&&(win=global),win.log=(...e)=>{args.debug&&console.log(...e)};export default(e={d:"debug"})=>{let s="",t=[];const n=()=>{s&&(0===t.length?args[s]=!0:1===t.length?args[s]=t[0]:args[s]=t)};for(let g=2;g<process.argv.length;g++){const o=process.argv[g];o.startsWith("-")?(n(),o.startsWith("--")?s=o.slice(2):(s=o.slice(1),e[s]&&(s=e[s])),t=[]):t.push(o)}return n(),args};
1
+ import{spawn}from"child_process";const args={};let win={};"undefined"!=typeof window?win=window:"undefined"!=typeof global&&(win=global),win.log=(...e)=>{args.debug&&console.log(...e)};export const getArgs=(e={d:"debug"})=>{let s="",o=[];const r=()=>{s&&(0===o.length?args[s]=!0:1===o.length?"false"===o[0]?args[s]=!1:args[s]=o[0]:args[s]=o)};for(let t=2;t<process.argv.length;t++){const n=process.argv[t];n.startsWith("-")?(r(),n.startsWith("--")?s=n.slice(2):(s=n.slice(1),e[s]&&(s=e[s])),o=[]):o.push(n)}return r(),args};export const runChildProcess=e=>new Promise(((s,o)=>{const[r,...t]=e.split(" ");spawn(r,t).on("close",(e=>{0===e?s(`child process exited with code ${e}`):o(new Error(`child process exited with code ${e}`))}))}));export const runChildNodeProcess=(e,s={})=>{const o=`node ${e} ${Object.entries(s).flatMap((([e,s])=>!0===s?[`--${e}`]:[`--${e}`,s])).join(" ")}`;return runChildProcess(o)};
@@ -50,6 +50,7 @@
50
50
  <a href="../components/sidemenu.html">Side Menu</a>
51
51
  <a href="../components/split.html">Split</a>
52
52
  <a href="../components/tabs.html">Tabs</a>
53
+ <a href="../components/toggle.html">Toggle</a>
53
54
  <a href="../components/websnippeteditor.html">Web Snippet Editor</a>
54
55
  </div>
55
56
  </menu>
package/docs/nav.inc.html CHANGED
@@ -50,6 +50,7 @@
50
50
  <a href="./components/sidemenu.html">Side Menu</a>
51
51
  <a href="./components/split.html">Split</a>
52
52
  <a href="./components/tabs.html">Tabs</a>
53
+ <a href="./components/toggle.html">Toggle</a>
53
54
  <a href="./components/websnippeteditor.html">Web Snippet Editor</a>
54
55
  </div>
55
56
  </menu>
@@ -13,10 +13,6 @@
13
13
  <main>
14
14
 
15
15
  </main>
16
- <script type="module">
17
- import Icon from '../kempo/components/Icon.js';
18
- Icon.pathToIcons = '../kempo/icons';
19
- </script>
20
16
  <script type="module" src="../kempo/components/Import.js"></script>
21
17
  </body>
22
18
  </html>