@substrate-system/tool-tip 0.0.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.
@@ -0,0 +1,5 @@
1
+ var b=Object.defineProperty;var p=(g,t)=>b(g,"name",{value:t,configurable:!0});var u=class extends HTMLElement{static{p(this,"ToolTip")}static observedAttributes=["content","placement","disabled","open","distance","skidding"];popup=null;arrow=null;target=null;_open=!1;_disabled=!1;get content(){return this.getAttribute("content")||""}set content(t){this.setAttribute("content",t)}get placement(){return this.getAttribute("placement")||"top"}set placement(t){this.setAttribute("placement",t)}get trigger(){return(this.getAttribute("trigger")||"hover focus").split(" ").filter(Boolean)}set trigger(t){Array.isArray(t)?this.setAttribute("trigger",t.join(" ")):this.setAttribute("trigger",t)}get disabled(){return this._disabled}set disabled(t){this._disabled=t,t?this.setAttribute("disabled",""):this.removeAttribute("disabled")}get open(){return this._open}set open(t){if(this._disabled)return;let e=this._open;this._open=t,t&&!e?this.showTooltip():!t&&e&&this.hideTooltip()}get distance(){return parseInt(this.getAttribute("distance")||"8",10)}set distance(t){this.setAttribute("distance",String(t))}get skidding(){return parseInt(this.getAttribute("skidding")||"0",10)}set skidding(t){this.setAttribute("skidding",String(t))}get hoist(){return this.hasAttribute("hoist")}set hoist(t){t?this.setAttribute("hoist",""):this.removeAttribute("hoist")}connectedCallback(){if(this.style.display="contents",this.target=this.firstElementChild,!this.target){console.warn("tool-tip: No target element found. Add a child element.");return}this.createPopup(),this.bindEvents(),this.hasAttribute("open")&&(this._open=!0,this.showTooltip())}disconnectedCallback(){this.unbindEvents(),this.popup?.remove()}attributeChangedCallback(t,e,i){if(t==="content"&&this.popup){let s=this.popup.querySelector(".tool-tip__body");s&&(s.textContent=i||"")}t==="placement"&&this._open&&this.positionPopup(),t==="disabled"&&(this._disabled=i!==null,this._disabled&&this._open&&this.hide()),t==="open"&&(this.open=i!==null),(t==="distance"||t==="skidding")&&this._open&&this.positionPopup()}createPopup(){this.popup=document.createElement("div"),this.popup.className="tool-tip__popup",this.popup.setAttribute("role","tooltip"),this.popup.setAttribute("aria-hidden","true"),this.popup.innerHTML=`
2
+ <div class="tool-tip__body">${this.content}</div>
3
+ <div class="tool-tip__arrow"></div>
4
+ `,this.arrow=this.popup.querySelector(".tool-tip__arrow"),this.hoist?document.body.appendChild(this.popup):this.appendChild(this.popup)}bindEvents(){if(!this.target)return;let t=this.trigger;t.includes("hover")&&(this.target.addEventListener("mouseenter",this.handleMouseEnter),this.target.addEventListener("mouseleave",this.handleMouseLeave)),t.includes("focus")&&(this.target.addEventListener("focus",this.handleFocus),this.target.addEventListener("blur",this.handleBlur)),t.includes("click")&&this.target.addEventListener("click",this.handleClick),this.target.addEventListener("keydown",this.handleKeyDown)}unbindEvents(){this.target&&(this.target.removeEventListener("mouseenter",this.handleMouseEnter),this.target.removeEventListener("mouseleave",this.handleMouseLeave),this.target.removeEventListener("focus",this.handleFocus),this.target.removeEventListener("blur",this.handleBlur),this.target.removeEventListener("click",this.handleClick),this.target.removeEventListener("keydown",this.handleKeyDown))}handleMouseEnter=p(()=>{this.show()},"handleMouseEnter");handleMouseLeave=p(()=>{this.hide()},"handleMouseLeave");handleFocus=p(()=>{this.show()},"handleFocus");handleBlur=p(()=>{this.hide()},"handleBlur");handleClick=p(()=>{this._open?this.hide():this.show()},"handleClick");handleKeyDown=p(t=>{t.key==="Escape"&&this._open&&this.hide()},"handleKeyDown");showTooltip(){if(!this.popup||this._disabled)return;let t=new CustomEvent("tool-tip-show",{bubbles:!0,cancelable:!0});this.dispatchEvent(t)&&(this.popup.classList.add("tool-tip__popup--visible"),this.popup.setAttribute("aria-hidden","false"),this.positionPopup(),this.dispatchEvent(new CustomEvent("tool-tip-after-show",{bubbles:!0})))}hideTooltip(){if(!this.popup)return;let t=new CustomEvent("tool-tip-hide",{bubbles:!0,cancelable:!0});this.dispatchEvent(t)&&(this.popup.classList.remove("tool-tip__popup--visible"),this.popup.setAttribute("aria-hidden","true"),this.dispatchEvent(new CustomEvent("tool-tip-after-hide",{bubbles:!0})))}positionPopup(){if(!this.popup||!this.target)return;let t=this.target.getBoundingClientRect(),e=this.popup.getBoundingClientRect(),i=8,s=0,a=0,o="",n="",r="",h=this.distance,l=this.skidding,d=this.getOptimalPlacement(t,e);switch(this.popup.dataset.placement=d,d){case"top":s=t.top-e.height-h-i,a=t.left+t.width/2-e.width/2+l,o="100%",n="50%",r="translateX(-50%)";break;case"top-start":s=t.top-e.height-h-i,a=t.left+l,o="100%",n=`${Math.min(24,e.width/2)}px`,r="translateX(-50%)";break;case"top-end":s=t.top-e.height-h-i,a=t.right-e.width+l,o="100%",n=`calc(100% - ${Math.min(24,e.width/2)}px)`,r="translateX(-50%)";break;case"bottom":s=t.bottom+h+i,a=t.left+t.width/2-e.width/2+l,o="0",n="50%",r="translateX(-50%) translateY(-100%)";break;case"bottom-start":s=t.bottom+h+i,a=t.left+l,o="0",n=`${Math.min(24,e.width/2)}px`,r="translateX(-50%) translateY(-100%)";break;case"bottom-end":s=t.bottom+h+i,a=t.right-e.width+l,o="0",n=`calc(100% - ${Math.min(24,e.width/2)}px)`,r="translateX(-50%) translateY(-100%)";break;case"left":s=t.top+t.height/2-e.height/2+l,a=t.left-e.width-h-i,o="50%",n="100%",r="translateY(-50%)";break;case"left-start":s=t.top+l,a=t.left-e.width-h-i,o=`${Math.min(16,e.height/2)}px`,n="100%",r="translateY(-50%)";break;case"left-end":s=t.bottom-e.height+l,a=t.left-e.width-h-i,o=`calc(100% - ${Math.min(16,e.height/2)}px)`,n="100%",r="translateY(-50%)";break;case"right":s=t.top+t.height/2-e.height/2+l,a=t.right+h+i,o="50%",n="0",r="translateY(-50%) translateX(-100%)";break;case"right-start":s=t.top+l,a=t.right+h+i,o=`${Math.min(16,e.height/2)}px`,n="0",r="translateY(-50%) translateX(-100%)";break;case"right-end":s=t.bottom-e.height+l,a=t.right+h+i,o=`calc(100% - ${Math.min(16,e.height/2)}px)`,n="0",r="translateY(-50%) translateX(-100%)";break}this.hoist&&(s+=window.scrollY,a+=window.scrollX),this.popup.style.top=`${s}px`,this.popup.style.left=`${a}px`,this.arrow&&(this.arrow.style.top=o,this.arrow.style.left=n,this.arrow.style.transform=r)}getOptimalPlacement(t,e){let i=this.placement,s=window.innerWidth,a=window.innerHeight,o=this.distance,n=8,r={top:t.top-e.height-o-n>0,bottom:t.bottom+e.height+o+n<a,left:t.left-e.width-o-n>0,right:t.right+e.width+o+n<s},h=i.split("-")[0];if(r[h])return i;let d={top:"bottom",bottom:"top",left:"right",right:"left"}[h];if(r[d]){let c=i.includes("-")?i.split("-")[1]:"";return c?`${d}-${c}`:d}for(let c of["top","bottom","left","right"])if(r[c])return c;return i}show(){this._disabled||(this.open=!0)}hide(){this.open=!1}};"customElements"in window&&customElements.define("tool-tip",u);export{u as ToolTip};
5
+ //# sourceMappingURL=index.min.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/index.ts"],
4
+ "sourcesContent": ["// for document.querySelector\ndeclare global {\n interface HTMLElementTagNameMap {\n 'tool-tip':ToolTip\n }\n}\n\nexport type Placement =\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'left'\n | 'left-start'\n | 'left-end'\n\nexport type Trigger = 'hover'|'focus'|'click'|'manual'\n\nexport class ToolTip extends HTMLElement {\n static observedAttributes = ['content', 'placement', 'disabled',\n 'open', 'distance', 'skidding']\n\n private popup: HTMLDivElement | null = null\n private arrow: HTMLDivElement | null = null\n private target: HTMLElement | null = null\n\n private _open = false\n private _disabled = false\n\n get content (): string {\n return this.getAttribute('content') || ''\n }\n\n set content (value: string) {\n this.setAttribute('content', value)\n }\n\n get placement (): Placement {\n return (this.getAttribute('placement') as Placement) || 'top'\n }\n\n set placement (value: Placement) {\n this.setAttribute('placement', value)\n }\n\n get trigger (): Trigger[] {\n const attr = this.getAttribute('trigger') || 'hover focus'\n return attr.split(' ').filter(Boolean) as Trigger[]\n }\n\n set trigger (value: Trigger[] | string) {\n if (Array.isArray(value)) {\n this.setAttribute('trigger', value.join(' '))\n } else {\n this.setAttribute('trigger', value)\n }\n }\n\n get disabled (): boolean {\n return this._disabled\n }\n\n set disabled (value: boolean) {\n this._disabled = value\n if (value) {\n this.setAttribute('disabled', '')\n } else {\n this.removeAttribute('disabled')\n }\n }\n\n get open (): boolean {\n return this._open\n }\n\n set open (value: boolean) {\n if (this._disabled) return\n const wasOpen = this._open\n this._open = value\n\n if (value && !wasOpen) {\n this.showTooltip()\n } else if (!value && wasOpen) {\n this.hideTooltip()\n }\n }\n\n get distance (): number {\n return parseInt(this.getAttribute('distance') || '8', 10)\n }\n\n set distance (value: number) {\n this.setAttribute('distance', String(value))\n }\n\n get skidding (): number {\n return parseInt(this.getAttribute('skidding') || '0', 10)\n }\n\n set skidding (value: number) {\n this.setAttribute('skidding', String(value))\n }\n\n get hoist (): boolean {\n return this.hasAttribute('hoist')\n }\n\n set hoist (value: boolean) {\n if (value) {\n this.setAttribute('hoist', '')\n } else {\n this.removeAttribute('hoist')\n }\n }\n\n connectedCallback () {\n // Use display: contents so the tooltip doesn't affect layout\n this.style.display = 'contents'\n\n // Find the target element (first child element)\n this.target = this.firstElementChild as HTMLElement\n\n if (!this.target) {\n console.warn('tool-tip: No target element found. ' +\n 'Add a child element.')\n return\n }\n\n // Create the popup element\n this.createPopup()\n\n // Bind event handlers\n this.bindEvents()\n\n // Check if open attribute is set\n if (this.hasAttribute('open')) {\n this._open = true\n this.showTooltip()\n }\n }\n\n disconnectedCallback () {\n this.unbindEvents()\n this.popup?.remove()\n }\n\n attributeChangedCallback (\n name:string,\n _oldValue:string|null,\n newValue:string|null\n ) {\n if (name === 'content' && this.popup) {\n const body = this.popup.querySelector('.tool-tip__body')\n if (body) {\n body.textContent = newValue || ''\n }\n }\n\n if (name === 'placement' && this._open) {\n this.positionPopup()\n }\n\n if (name === 'disabled') {\n this._disabled = newValue !== null\n if (this._disabled && this._open) {\n this.hide()\n }\n }\n\n if (name === 'open') {\n this.open = newValue !== null\n }\n\n if ((name === 'distance' || name === 'skidding') && this._open) {\n this.positionPopup()\n }\n }\n\n private createPopup () {\n this.popup = document.createElement('div')\n this.popup.className = 'tool-tip__popup'\n this.popup.setAttribute('role', 'tooltip')\n this.popup.setAttribute('aria-hidden', 'true')\n this.popup.innerHTML = `\n <div class=\"tool-tip__body\">${this.content}</div>\n <div class=\"tool-tip__arrow\"></div>\n `\n\n this.arrow = this.popup.querySelector('.tool-tip__arrow')\n\n // Append to body if hoisted, otherwise to this element's parent\n if (this.hoist) {\n document.body.appendChild(this.popup)\n } else {\n this.appendChild(this.popup)\n }\n }\n\n private bindEvents () {\n if (!this.target) return\n\n const triggers = this.trigger\n\n if (triggers.includes('hover')) {\n this.target.addEventListener('mouseenter', this.handleMouseEnter)\n this.target.addEventListener('mouseleave', this.handleMouseLeave)\n }\n\n if (triggers.includes('focus')) {\n this.target.addEventListener('focus', this.handleFocus)\n this.target.addEventListener('blur', this.handleBlur)\n }\n\n if (triggers.includes('click')) {\n this.target.addEventListener('click', this.handleClick)\n }\n\n // Add keyboard support\n this.target.addEventListener('keydown', this.handleKeyDown)\n }\n\n private unbindEvents () {\n if (!this.target) return\n\n this.target.removeEventListener('mouseenter', this.handleMouseEnter)\n this.target.removeEventListener('mouseleave', this.handleMouseLeave)\n this.target.removeEventListener('focus', this.handleFocus)\n this.target.removeEventListener('blur', this.handleBlur)\n this.target.removeEventListener('click', this.handleClick)\n this.target.removeEventListener('keydown', this.handleKeyDown)\n }\n\n private handleMouseEnter = () => {\n this.show()\n }\n\n private handleMouseLeave = () => {\n this.hide()\n }\n\n private handleFocus = () => {\n this.show()\n }\n\n private handleBlur = () => {\n this.hide()\n }\n\n private handleClick = () => {\n if (this._open) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n private handleKeyDown = (event: KeyboardEvent) => {\n // Close tooltip on Escape\n if (event.key === 'Escape' && this._open) {\n this.hide()\n }\n }\n\n private showTooltip () {\n if (!this.popup || this._disabled) return\n\n // Emit show event\n const showEvent = new CustomEvent('tool-tip-show', {\n bubbles: true,\n cancelable: true,\n })\n if (!this.dispatchEvent(showEvent)) return\n\n this.popup.classList.add('tool-tip__popup--visible')\n this.popup.setAttribute('aria-hidden', 'false')\n\n // Position the popup\n this.positionPopup()\n\n // Emit after-show event\n this.dispatchEvent(new CustomEvent('tool-tip-after-show', {\n bubbles: true\n }))\n }\n\n private hideTooltip () {\n if (!this.popup) return\n\n // Emit hide event\n const hideEvent = new CustomEvent('tool-tip-hide', {\n bubbles: true,\n cancelable: true,\n })\n if (!this.dispatchEvent(hideEvent)) return\n\n this.popup.classList.remove('tool-tip__popup--visible')\n this.popup.setAttribute('aria-hidden', 'true')\n\n // Emit after-hide event\n this.dispatchEvent(new CustomEvent('tool-tip-after-hide', {\n bubbles: true\n }))\n }\n\n private positionPopup () {\n if (!this.popup || !this.target) return\n\n const targetRect = this.target.getBoundingClientRect()\n const popupRect = this.popup.getBoundingClientRect()\n const arrowSize = 8\n\n let top = 0\n let left = 0\n let arrowTop = ''\n let arrowLeft = ''\n let arrowTransform = ''\n\n const distance = this.distance\n const skidding = this.skidding\n const placement = this.getOptimalPlacement(targetRect, popupRect)\n\n // Set data attribute for CSS styling\n this.popup.dataset.placement = placement\n\n switch (placement) {\n case 'top':\n top = targetRect.top - popupRect.height - distance - arrowSize\n left = targetRect.left + (targetRect.width / 2) -\n (popupRect.width / 2) + skidding\n arrowTop = '100%'\n arrowLeft = '50%'\n arrowTransform = 'translateX(-50%)'\n break\n case 'top-start':\n top = targetRect.top - popupRect.height - distance - arrowSize\n left = targetRect.left + skidding\n arrowTop = '100%'\n arrowLeft = `${Math.min(24, popupRect.width / 2)}px`\n arrowTransform = 'translateX(-50%)'\n break\n case 'top-end':\n top = targetRect.top - popupRect.height - distance - arrowSize\n left = targetRect.right - popupRect.width + skidding\n arrowTop = '100%'\n arrowLeft = `calc(100% - ${Math.min(24, popupRect.width / 2)}px)`\n arrowTransform = 'translateX(-50%)'\n break\n case 'bottom':\n top = targetRect.bottom + distance + arrowSize\n left = targetRect.left + (targetRect.width / 2) -\n (popupRect.width / 2) + skidding\n arrowTop = '0'\n arrowLeft = '50%'\n arrowTransform = 'translateX(-50%) translateY(-100%)'\n break\n case 'bottom-start':\n top = targetRect.bottom + distance + arrowSize\n left = targetRect.left + skidding\n arrowTop = '0'\n arrowLeft = `${Math.min(24, popupRect.width / 2)}px`\n arrowTransform = 'translateX(-50%) translateY(-100%)'\n break\n case 'bottom-end':\n top = targetRect.bottom + distance + arrowSize\n left = targetRect.right - popupRect.width + skidding\n arrowTop = '0'\n arrowLeft = `calc(100% - ${Math.min(24, popupRect.width / 2)}px)`\n arrowTransform = 'translateX(-50%) translateY(-100%)'\n break\n case 'left':\n top = targetRect.top + (targetRect.height / 2) -\n (popupRect.height / 2) + skidding\n left = targetRect.left - popupRect.width - distance - arrowSize\n arrowTop = '50%'\n arrowLeft = '100%'\n arrowTransform = 'translateY(-50%)'\n break\n case 'left-start':\n top = targetRect.top + skidding\n left = targetRect.left - popupRect.width - distance - arrowSize\n arrowTop = `${Math.min(16, popupRect.height / 2)}px`\n arrowLeft = '100%'\n arrowTransform = 'translateY(-50%)'\n break\n case 'left-end':\n top = targetRect.bottom - popupRect.height + skidding\n left = targetRect.left - popupRect.width - distance - arrowSize\n arrowTop = `calc(100% - ${Math.min(16, popupRect.height / 2)}px)`\n arrowLeft = '100%'\n arrowTransform = 'translateY(-50%)'\n break\n case 'right':\n top = targetRect.top + (targetRect.height / 2) -\n (popupRect.height / 2) + skidding\n left = targetRect.right + distance + arrowSize\n arrowTop = '50%'\n arrowLeft = '0'\n arrowTransform = 'translateY(-50%) translateX(-100%)'\n break\n case 'right-start':\n top = targetRect.top + skidding\n left = targetRect.right + distance + arrowSize\n arrowTop = `${Math.min(16, popupRect.height / 2)}px`\n arrowLeft = '0'\n arrowTransform = 'translateY(-50%) translateX(-100%)'\n break\n case 'right-end':\n top = targetRect.bottom - popupRect.height + skidding\n left = targetRect.right + distance + arrowSize\n arrowTop = `calc(100% - ${Math.min(16, popupRect.height / 2)}px)`\n arrowLeft = '0'\n arrowTransform = 'translateY(-50%) translateX(-100%)'\n break\n }\n\n // Adjust for scroll position\n if (this.hoist) {\n top += window.scrollY\n left += window.scrollX\n }\n\n // Apply position\n this.popup.style.top = `${top}px`\n this.popup.style.left = `${left}px`\n\n // Position the arrow\n if (this.arrow) {\n this.arrow.style.top = arrowTop\n this.arrow.style.left = arrowLeft\n this.arrow.style.transform = arrowTransform\n }\n }\n\n private getOptimalPlacement (targetRect:DOMRect, popupRect:DOMRect):Placement {\n const placement = this.placement\n const viewportWidth = window.innerWidth\n const viewportHeight = window.innerHeight\n const distance = this.distance\n const arrowSize = 8\n\n // Check if the preferred placement fits\n const fits = {\n top: targetRect.top - popupRect.height - distance - arrowSize > 0,\n bottom: (targetRect.bottom + popupRect.height + distance +\n arrowSize < viewportHeight),\n left: targetRect.left - popupRect.width - distance - arrowSize > 0,\n right: (targetRect.right + popupRect.width + distance +\n arrowSize < viewportWidth),\n }\n\n // Get the base direction from the placement\n const baseDirection = placement.split('-')[0] as 'top'|\n 'bottom'|\n 'left'|\n 'right'\n\n // If preferred placement fits, use it\n if (fits[baseDirection]) {\n return placement\n }\n\n // Find the best alternative\n const opposites: Record<string, string> = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left',\n }\n\n const opposite = opposites[baseDirection] as\n 'top'|'bottom'|'left'|'right'\n if (fits[opposite]) {\n // Return the opposite with the same alignment\n const alignment = (placement.includes('-') ?\n placement.split('-')[1] :\n '')\n return (alignment ?\n `${opposite}-${alignment}` :\n opposite) as Placement\n }\n\n // Fall back to a direction that fits\n for (const dir of ['top', 'bottom', 'left', 'right'] as const) {\n if (fits[dir]) {\n return dir\n }\n }\n\n // If nothing fits, return original placement\n return placement\n }\n\n /**\n * Programmatically show the tooltip\n */\n show () {\n if (this._disabled) return\n this.open = true\n }\n\n /**\n * Programmatically hide the tooltip\n */\n hide () {\n this.open = false\n }\n}\n\nif ('customElements' in window) {\n customElements.define('tool-tip', ToolTip)\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["ToolTip", "__name", "value", "wasOpen", "name", "_oldValue", "newValue", "body", "triggers", "event", "showEvent", "hideEvent", "targetRect", "popupRect", "arrowSize", "top", "left", "arrowTop", "arrowLeft", "arrowTransform", "distance", "skidding", "placement", "viewportWidth", "viewportHeight", "fits", "baseDirection", "opposite", "alignment", "dir"]
7
+ }
package/dist/meta.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "inputs": {
3
+ "src/index.ts": {
4
+ "bytes": 15752,
5
+ "imports": [],
6
+ "format": "esm"
7
+ }
8
+ },
9
+ "outputs": {
10
+ "dist/index.js.map": {
11
+ "imports": [],
12
+ "exports": [],
13
+ "inputs": {},
14
+ "bytes": 24293
15
+ },
16
+ "dist/index.js": {
17
+ "imports": [],
18
+ "exports": [
19
+ "ToolTip"
20
+ ],
21
+ "entryPoint": "src/index.ts",
22
+ "inputs": {
23
+ "src/index.ts": {
24
+ "bytesInOutput": 12111
25
+ }
26
+ },
27
+ "bytes": 12296
28
+ }
29
+ }
30
+ }
package/package.json ADDED
@@ -0,0 +1,548 @@
1
+ {
2
+ "name": "@substrate-system/tool-tip",
3
+ "version": "0.0.0",
4
+ "description": "Tooltips for when you hover",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": {
8
+ "import": "./dist/index.js",
9
+ "require": "./dist/index.cjs"
10
+ },
11
+ "./css": "./dist/index.css",
12
+ "./min/css": "./dist/index.min.css",
13
+ "./min/*": {
14
+ "import": "./dist/*.min.js",
15
+ "require": "./dist/*.min.cjs"
16
+ },
17
+ "./*": {
18
+ "import": "./dist/*.js",
19
+ "require": "./dist/*.cjs"
20
+ }
21
+ },
22
+ "main": "dist/index.js",
23
+ "directories": {
24
+ "example": "example",
25
+ "test": "test"
26
+ },
27
+ "files": [
28
+ "./dist/*"
29
+ ],
30
+ "scripts": {
31
+ "lint": "eslint \"./**/*.{ts,js}\"",
32
+ "test": "esbuild ./test/index.ts --bundle --format=esm | tapout",
33
+ "build-css": "lightningcss --nesting src/index.css -o dist/index.css",
34
+ "build-css:min": "lightningcss --nesting --minify src/index.css -o dist/index.min.css",
35
+ "build-cjs": "esbuild src/*.ts --format=cjs --keep-names --tsconfig=tsconfig.build.json --outdir=./dist --out-extension:.js=.cjs --sourcemap",
36
+ "build-esm": "esbuild src/*.ts --format=esm --metafile=dist/meta.json --keep-names --tsconfig=tsconfig.build.json --outdir=./dist --sourcemap && tsc --emitDeclarationOnly --project tsconfig.build.json --outDir dist",
37
+ "build-esm:min": "esbuild ./src/*.ts --format=esm --keep-names --bundle --tsconfig=tsconfig.build.json --minify --out-extension:.js=.min.js --outdir=./dist --sourcemap",
38
+ "build-example": "mkdir -p ./public && rm -rf ./public/* && NODE_ENV=development vite --mode development --base=\"/tool-tip\" build",
39
+ "build-docs": "typedoc --tsconfig tsconfig.build.json ./src/index.ts",
40
+ "build": "mkdir -p ./dist && rm -rf ./dist/* && npm run build-cjs && npm run build-esm && npm run build-esm:min && npm run build-css && npm run build-css:min",
41
+ "start": "vite",
42
+ "toc": "markdown-toc --maxdepth 3 -i README.md",
43
+ "preversion": "npm run lint && stylelint src/*.css",
44
+ "version": "npm run toc && auto-changelog -p --template keepachangelog --breaking-pattern 'BREAKING CHANGE:' && git add CHANGELOG.md README.md",
45
+ "postversion": "git push --follow-tags && npm publish",
46
+ "prepublishOnly": "npm run build"
47
+ },
48
+ "dependencies": {
49
+ "acorn": "^8.15.0",
50
+ "acorn-jsx": "^5.3.2",
51
+ "ajv": "^6.12.6",
52
+ "ansi-red": "^0.1.1",
53
+ "ansi-regex": "^5.0.1",
54
+ "ansi-styles": "^4.3.0",
55
+ "ansi-wrap": "^0.1.0",
56
+ "argparse": "^2.0.1",
57
+ "array-buffer-byte-length": "^1.0.2",
58
+ "array-includes": "^3.1.9",
59
+ "array.prototype.findlastindex": "^1.2.6",
60
+ "array.prototype.flat": "^1.3.3",
61
+ "array.prototype.flatmap": "^1.3.3",
62
+ "arraybuffer.prototype.slice": "^1.0.4",
63
+ "asap": "^2.0.6",
64
+ "astral-regex": "^2.0.0",
65
+ "async-function": "^1.0.0",
66
+ "autolinker": "^0.28.1",
67
+ "available-typed-arrays": "^1.0.7",
68
+ "axe-core": "^4.11.1",
69
+ "balanced-match": "^1.0.2",
70
+ "base64-js": "^1.5.1",
71
+ "baseline-browser-mapping": "^2.9.18",
72
+ "boolean": "^3.2.0",
73
+ "brace-expansion": "^2.0.2",
74
+ "braces": "^3.0.3",
75
+ "browser-launcher": "^3.0.1",
76
+ "browser-run": "^12.0.0",
77
+ "buffer-crc32": "^0.2.13",
78
+ "buffer-from": "^1.1.2",
79
+ "buffer-shims": "^1.0.0",
80
+ "builtin-modules": "^3.3.0",
81
+ "builtins": "^5.1.0",
82
+ "bytes": "^3.0.0",
83
+ "cacheable": "^2.3.2",
84
+ "cacheable-lookup": "^5.0.4",
85
+ "cacheable-request": "^7.0.4",
86
+ "call-bind": "^1.0.8",
87
+ "call-bind-apply-helpers": "^1.0.2",
88
+ "call-bound": "^1.0.4",
89
+ "callsites": "^3.1.0",
90
+ "caniuse-lite": "^1.0.30001766",
91
+ "chalk": "^4.1.2",
92
+ "charset": "^1.0.1",
93
+ "cliui": "^9.0.1",
94
+ "clone-response": "^1.0.3",
95
+ "color-convert": "^2.0.1",
96
+ "color-name": "^1.1.4",
97
+ "colord": "^2.9.3",
98
+ "commander": "^7.2.0",
99
+ "concat-map": "^0.0.1",
100
+ "concat-stream": "^1.6.2",
101
+ "concat-with-sourcemaps": "^1.1.0",
102
+ "content-disposition": "^0.5.2",
103
+ "core-util-is": "^1.0.3",
104
+ "cosmiconfig": "^9.0.0",
105
+ "cross-spawn": "^7.0.6",
106
+ "crypto-random-string": "^1.0.0",
107
+ "css-functions-list": "^3.2.3",
108
+ "css-tree": "^3.1.0",
109
+ "cssauron": "^1.4.0",
110
+ "cssesc": "^3.0.0",
111
+ "data-view-buffer": "^1.0.2",
112
+ "data-view-byte-length": "^1.0.2",
113
+ "data-view-byte-offset": "^1.0.1",
114
+ "debug": "^4.4.3",
115
+ "decompress-response": "^6.0.0",
116
+ "deep-is": "^0.1.4",
117
+ "defer-to-connect": "^2.0.1",
118
+ "define-data-property": "^1.1.4",
119
+ "define-properties": "^1.2.1",
120
+ "detect-libc": "^2.1.2",
121
+ "detect-node": "^2.1.0",
122
+ "dezalgo": "^1.0.4",
123
+ "diacritics-map": "^0.1.0",
124
+ "doctrine": "^3.0.0",
125
+ "dunder-proto": "^1.0.1",
126
+ "duplexer": "^0.1.2",
127
+ "duplexer2": "^0.0.2",
128
+ "ecstatic": "^4.1.4",
129
+ "ee-first": "^1.1.1",
130
+ "electron": "^26.6.10",
131
+ "electron-stream": "^11.0.2",
132
+ "electron-to-chromium": "^1.5.279",
133
+ "emoji-regex": "^8.0.0",
134
+ "end-of-stream": "^1.4.5",
135
+ "enstore": "^1.0.1",
136
+ "ent": "^2.2.2",
137
+ "entities": "^4.5.0",
138
+ "env-paths": "^2.2.1",
139
+ "error-ex": "^1.3.4",
140
+ "es-abstract": "^1.24.1",
141
+ "es-define-property": "^1.0.1",
142
+ "es-errors": "^1.3.0",
143
+ "es-object-atoms": "^1.1.1",
144
+ "es-set-tostringtag": "^2.1.0",
145
+ "es-shim-unscopables": "^1.1.0",
146
+ "es-to-primitive": "^1.3.0",
147
+ "es6-error": "^4.1.1",
148
+ "escalade": "^3.2.0",
149
+ "escape-string-regexp": "^4.0.0",
150
+ "eslint-compat-utils": "^0.5.1",
151
+ "eslint-import-resolver-node": "^0.3.9",
152
+ "eslint-module-utils": "^2.12.1",
153
+ "eslint-plugin-es-x": "^7.8.0",
154
+ "eslint-plugin-import": "^2.32.0",
155
+ "eslint-plugin-n": "^16.6.2",
156
+ "eslint-plugin-promise": "^6.6.0",
157
+ "eslint-scope": "^7.2.2",
158
+ "eslint-visitor-keys": "^3.4.3",
159
+ "espree": "^9.6.1",
160
+ "esprima": "^4.0.1",
161
+ "esquery": "^1.7.0",
162
+ "esrecurse": "^4.3.0",
163
+ "estraverse": "^5.3.0",
164
+ "esutils": "^2.0.3",
165
+ "expand-range": "^1.8.2",
166
+ "extend-shallow": "^2.0.1",
167
+ "extract-zip": "^2.0.1",
168
+ "fast-deep-equal": "^3.1.3",
169
+ "fast-glob": "^3.3.3",
170
+ "fast-json-stable-stringify": "^2.1.0",
171
+ "fast-levenshtein": "^2.0.6",
172
+ "fast-uri": "^3.1.0",
173
+ "fastest-levenshtein": "^1.0.16",
174
+ "fastq": "^1.20.1",
175
+ "fd-slicer": "^1.1.0",
176
+ "figures": "^1.7.0",
177
+ "file-entry-cache": "^6.0.1",
178
+ "fill-range": "^2.2.4",
179
+ "find-up": "^5.0.0",
180
+ "flat-cache": "^3.2.0",
181
+ "flatted": "^3.3.3",
182
+ "for-each": "^0.3.5",
183
+ "for-in": "^1.0.2",
184
+ "fs-extra": "^8.1.0",
185
+ "fs.realpath": "^1.0.0",
186
+ "function-bind": "^1.1.2",
187
+ "function.prototype.name": "^1.1.8",
188
+ "functions-have-names": "^1.2.3",
189
+ "generator-function": "^2.0.1",
190
+ "get-caller-file": "^2.0.5",
191
+ "get-east-asian-width": "^1.4.0",
192
+ "get-intrinsic": "^1.3.0",
193
+ "get-proto": "^1.0.1",
194
+ "get-stream": "^5.2.0",
195
+ "get-symbol-description": "^1.1.0",
196
+ "get-tsconfig": "^4.13.0",
197
+ "glob": "^7.2.3",
198
+ "glob-parent": "^6.0.2",
199
+ "global-agent": "^3.0.0",
200
+ "global-modules": "^2.0.0",
201
+ "global-prefix": "^3.0.0",
202
+ "globals": "^13.24.0",
203
+ "globalthis": "^1.0.4",
204
+ "globby": "^16.1.0",
205
+ "globjoin": "^0.1.4",
206
+ "gopd": "^1.2.0",
207
+ "got": "^11.8.6",
208
+ "graceful-fs": "^4.2.11",
209
+ "graphemer": "^1.4.0",
210
+ "gray-matter": "^2.1.1",
211
+ "gulp-header": "^1.8.12",
212
+ "handlebars": "^4.7.8",
213
+ "has-ansi": "^2.0.0",
214
+ "has-bigints": "^1.1.0",
215
+ "has-flag": "^5.0.1",
216
+ "has-property-descriptors": "^1.0.2",
217
+ "has-proto": "^1.2.0",
218
+ "has-symbols": "^1.1.0",
219
+ "has-tostringtag": "^1.0.2",
220
+ "hashery": "^1.4.0",
221
+ "hasown": "^2.0.2",
222
+ "he": "^1.2.0",
223
+ "headless": "^1.2.0",
224
+ "hookified": "^1.15.0",
225
+ "html-inject-script": "^2.0.0",
226
+ "html-select": "^2.3.24",
227
+ "html-tags": "^5.1.0",
228
+ "html-tokenize": "^1.2.5",
229
+ "http-cache-semantics": "^4.2.0",
230
+ "http2-wrapper": "^1.0.3",
231
+ "hyperstream": "^1.2.2",
232
+ "ignore": "^7.0.5",
233
+ "import-cwd": "^3.0.0",
234
+ "import-fresh": "^3.3.1",
235
+ "import-from": "^3.0.0",
236
+ "import-meta-resolve": "^4.2.0",
237
+ "imurmurhash": "^0.1.4",
238
+ "indexof": "^0.0.1",
239
+ "inflight": "^1.0.6",
240
+ "inherits": "^2.0.4",
241
+ "ini": "^1.3.8",
242
+ "internal-slot": "^1.1.0",
243
+ "is-array-buffer": "^3.0.5",
244
+ "is-arrayish": "^0.2.1",
245
+ "is-async-function": "^2.1.1",
246
+ "is-bigint": "^1.1.0",
247
+ "is-boolean-object": "^1.2.2",
248
+ "is-buffer": "^1.1.6",
249
+ "is-builtin-module": "^3.2.1",
250
+ "is-callable": "^1.2.7",
251
+ "is-core-module": "^2.16.1",
252
+ "is-data-view": "^1.0.2",
253
+ "is-date-object": "^1.1.0",
254
+ "is-extendable": "^0.1.1",
255
+ "is-extglob": "^2.1.1",
256
+ "is-finalizationregistry": "^1.1.1",
257
+ "is-finite": "^1.1.0",
258
+ "is-fullwidth-code-point": "^3.0.0",
259
+ "is-generator-function": "^1.1.2",
260
+ "is-glob": "^4.0.3",
261
+ "is-map": "^2.0.3",
262
+ "is-negative-zero": "^2.0.3",
263
+ "is-number": "^2.1.0",
264
+ "is-number-object": "^1.1.1",
265
+ "is-path-inside": "^3.0.3",
266
+ "is-plain-object": "^5.0.0",
267
+ "is-regex": "^1.2.1",
268
+ "is-set": "^2.0.3",
269
+ "is-shared-array-buffer": "^1.0.4",
270
+ "is-string": "^1.1.1",
271
+ "is-symbol": "^1.1.1",
272
+ "is-typed-array": "^1.1.15",
273
+ "is-weakmap": "^2.0.2",
274
+ "is-weakref": "^1.1.1",
275
+ "is-weakset": "^2.0.4",
276
+ "isarray": "^1.0.0",
277
+ "isexe": "^2.0.0",
278
+ "isobject": "^2.1.0",
279
+ "js-tokens": "^4.0.0",
280
+ "js-yaml": "^4.1.1",
281
+ "json-buffer": "^3.0.1",
282
+ "json-parse-even-better-errors": "^2.3.1",
283
+ "json-schema-traverse": "^0.4.1",
284
+ "json-stable-stringify-without-jsonify": "^1.0.1",
285
+ "json-stringify-safe": "^5.0.1",
286
+ "json5": "^1.0.2",
287
+ "jsonfile": "^4.0.0",
288
+ "keyv": "^4.5.4",
289
+ "kind-of": "^3.2.2",
290
+ "known-css-properties": "^0.37.0",
291
+ "lazy-cache": "^2.0.2",
292
+ "levn": "^0.4.1",
293
+ "lightningcss-cli-darwin-arm64": "^1.31.1",
294
+ "lightningcss-darwin-arm64": "^1.31.1",
295
+ "lines-and-columns": "^1.2.4",
296
+ "linkify-it": "^5.0.0",
297
+ "list-item": "^1.1.1",
298
+ "locate-path": "^6.0.0",
299
+ "lodash": "^4.17.23",
300
+ "lodash._reinterpolate": "^3.0.0",
301
+ "lodash.merge": "^4.6.2",
302
+ "lodash.template": "^4.5.0",
303
+ "lodash.templatesettings": "^4.2.0",
304
+ "lodash.truncate": "^4.4.2",
305
+ "lowercase-keys": "^2.0.0",
306
+ "lunr": "^2.3.9",
307
+ "markdown-it": "^14.1.0",
308
+ "markdown-link": "^0.1.1",
309
+ "matcher": "^3.0.0",
310
+ "math-intrinsics": "^1.1.0",
311
+ "math-random": "^1.0.4",
312
+ "mathml-tag-names": "^4.0.0",
313
+ "mdn-data": "^2.12.2",
314
+ "mdurl": "^2.0.0",
315
+ "meow": "^14.0.0",
316
+ "merge2": "^1.4.1",
317
+ "micromatch": "^4.0.8",
318
+ "mime": "^2.6.0",
319
+ "mime-db": "^1.33.0",
320
+ "mime-types": "^2.1.18",
321
+ "mimic-response": "^1.0.1",
322
+ "minimatch": "^9.0.5",
323
+ "minimist": "^1.2.8",
324
+ "mixin-deep": "^1.3.2",
325
+ "mkdirp": "^1.0.4",
326
+ "monotonic-timestamp": "^0.0.8",
327
+ "ms": "^2.1.3",
328
+ "nanoid": "^3.3.11",
329
+ "natural-compare": "^1.4.0",
330
+ "neo-async": "^2.6.2",
331
+ "node-fetch": "^2.7.0",
332
+ "node-releases": "^2.0.27",
333
+ "normalize-path": "^3.0.0",
334
+ "normalize-url": "^6.1.0",
335
+ "object-assign": "^4.1.1",
336
+ "object-inspect": "^1.13.4",
337
+ "object-keys": "^1.1.1",
338
+ "object.assign": "^4.1.7",
339
+ "object.fromentries": "^2.0.8",
340
+ "object.groupby": "^1.0.3",
341
+ "object.pick": "^1.3.0",
342
+ "object.values": "^1.2.1",
343
+ "on-finished": "^2.4.1",
344
+ "once": "^1.4.0",
345
+ "optionator": "^0.9.4",
346
+ "ordered-emitter": "^0.1.1",
347
+ "own-keys": "^1.0.1",
348
+ "p-cancelable": "^2.1.1",
349
+ "p-limit": "^3.1.0",
350
+ "p-locate": "^5.0.0",
351
+ "parent-module": "^1.0.1",
352
+ "parse-github-url": "^1.0.3",
353
+ "parse-json": "^5.2.0",
354
+ "parse-ms": "^1.0.1",
355
+ "path-exists": "^4.0.0",
356
+ "path-is-absolute": "^1.0.1",
357
+ "path-is-inside": "^1.0.2",
358
+ "path-key": "^3.1.1",
359
+ "path-parse": "^1.0.7",
360
+ "path-to-regexp": "^3.3.0",
361
+ "pend": "^1.2.0",
362
+ "picocolors": "^1.1.1",
363
+ "picomatch": "^2.3.1",
364
+ "pify": "^2.3.0",
365
+ "playwright": "^1.58.0",
366
+ "playwright-core": "^1.58.0",
367
+ "plist": "^3.1.0",
368
+ "plur": "^1.0.0",
369
+ "possible-typed-array-names": "^1.1.0",
370
+ "postcss": "^8.5.6",
371
+ "postcss-safe-parser": "^7.0.1",
372
+ "postcss-selector-parser": "^7.1.1",
373
+ "postcss-value-parser": "^4.2.0",
374
+ "prelude-ls": "^1.2.1",
375
+ "pretty-ms": "^2.1.0",
376
+ "process-nextick-args": "^2.0.1",
377
+ "progress": "^2.0.3",
378
+ "pump": "^3.0.3",
379
+ "punycode": "^1.4.1",
380
+ "punycode.js": "^2.3.1",
381
+ "qified": "^0.6.0",
382
+ "queue-microtask": "^1.2.3",
383
+ "quick-lru": "^5.1.1",
384
+ "randomatic": "^3.1.1",
385
+ "range-parser": "^1.2.0",
386
+ "re-emitter": "^1.1.3",
387
+ "readable-stream": "^2.3.8",
388
+ "readable-wrap": "^1.0.0",
389
+ "reflect.getprototypeof": "^1.0.10",
390
+ "regexp.prototype.flags": "^1.5.4",
391
+ "remarkable": "^1.7.4",
392
+ "repeat-element": "^1.1.4",
393
+ "repeat-string": "^1.6.1",
394
+ "require-directory": "^2.1.1",
395
+ "require-from-string": "^2.0.2",
396
+ "resolve": "^1.22.11",
397
+ "resolve-alpn": "^1.2.1",
398
+ "resolve-from": "^4.0.0",
399
+ "resolve-pkg-maps": "^1.0.0",
400
+ "responselike": "^2.0.1",
401
+ "reusify": "^1.1.0",
402
+ "rimraf": "^3.0.2",
403
+ "roarr": "^2.15.4",
404
+ "rollup": "^4.56.0",
405
+ "run-parallel": "^1.2.0",
406
+ "safe-array-concat": "^1.1.3",
407
+ "safe-buffer": "^5.1.2",
408
+ "safe-push-apply": "^1.0.0",
409
+ "safe-regex-test": "^1.1.0",
410
+ "semver": "^7.7.3",
411
+ "semver-compare": "^1.0.0",
412
+ "serialize-error": "^7.0.1",
413
+ "serve-handler": "^6.1.6",
414
+ "server-destroy": "^1.0.1",
415
+ "set-function-length": "^1.2.2",
416
+ "set-function-name": "^2.0.2",
417
+ "set-getter": "^0.1.1",
418
+ "set-proto": "^1.0.0",
419
+ "shebang-command": "^2.0.0",
420
+ "shebang-regex": "^3.0.0",
421
+ "side-channel": "^1.1.0",
422
+ "side-channel-list": "^1.0.0",
423
+ "side-channel-map": "^1.0.1",
424
+ "side-channel-weakmap": "^1.0.2",
425
+ "signal-exit": "^4.1.0",
426
+ "slash": "^5.1.0",
427
+ "slice-ansi": "^4.0.0",
428
+ "source-map": "^0.6.1",
429
+ "source-map-js": "^1.2.1",
430
+ "source-map-support": "^0.4.18",
431
+ "split": "^1.0.0",
432
+ "sprintf-js": "^1.1.3",
433
+ "stop-iteration-iterator": "^1.1.0",
434
+ "stream-combiner2": "^1.0.2",
435
+ "stream-read": "^1.1.2",
436
+ "stream-splicer": "^1.3.2",
437
+ "string-width": "^8.1.0",
438
+ "string.prototype.trim": "^1.2.10",
439
+ "string.prototype.trimend": "^1.0.9",
440
+ "string.prototype.trimstart": "^1.0.8",
441
+ "string_decoder": "^1.1.1",
442
+ "strip-ansi": "^6.0.1",
443
+ "strip-bom": "^3.0.0",
444
+ "strip-color": "^0.1.0",
445
+ "strip-json-comments": "^3.1.1",
446
+ "stylelint-config-recommended": "^18.0.0",
447
+ "sumchecker": "^3.0.1",
448
+ "supports-color": "^10.2.2",
449
+ "supports-hyperlinks": "^4.4.0",
450
+ "supports-preserve-symlinks-flag": "^1.0.0",
451
+ "svg-tags": "^1.0.0",
452
+ "table": "^6.9.0",
453
+ "tap-out": "^2.1.0",
454
+ "tap-parser": "^0.2.1",
455
+ "temp-dir": "^1.0.0",
456
+ "tempy": "^0.1.0",
457
+ "text-table": "^0.2.0",
458
+ "through": "^2.3.8",
459
+ "through2": "^2.0.5",
460
+ "throughout": "^0.0.0",
461
+ "tinyglobby": "^0.2.15",
462
+ "to-object-path": "^0.3.0",
463
+ "to-regex-range": "^5.0.1",
464
+ "toml": "^2.3.6",
465
+ "tr46": "^0.0.3",
466
+ "trim": "^0.0.1",
467
+ "trumpet": "^1.7.2",
468
+ "ts-api-utils": "^2.4.0",
469
+ "tsconfig-paths": "^3.15.0",
470
+ "type-check": "^0.4.0",
471
+ "type-fest": "^0.20.2",
472
+ "typed-array-buffer": "^1.0.3",
473
+ "typed-array-byte-length": "^1.0.3",
474
+ "typed-array-byte-offset": "^1.0.4",
475
+ "typed-array-length": "^1.0.7",
476
+ "typedarray": "^0.0.6",
477
+ "uc.micro": "^2.1.0",
478
+ "uglify-js": "^3.19.3",
479
+ "unbox-primitive": "^1.1.0",
480
+ "undici-types": "^7.16.0",
481
+ "unicorn-magic": "^0.4.0",
482
+ "unique-string": "^1.0.0",
483
+ "universalify": "^0.1.2",
484
+ "update-browserslist-db": "^1.2.3",
485
+ "uri-js": "^4.4.1",
486
+ "url-join": "^4.0.1",
487
+ "utf8-stream": "^0.0.0",
488
+ "util-deprecate": "^1.0.2",
489
+ "webidl-conversions": "^3.0.1",
490
+ "whatwg-url": "^5.0.0",
491
+ "which": "^2.0.2",
492
+ "which-boxed-primitive": "^1.1.1",
493
+ "which-builtin-type": "^1.2.1",
494
+ "which-collection": "^1.0.2",
495
+ "which-typed-array": "^1.1.20",
496
+ "word-wrap": "^1.2.5",
497
+ "wordwrap": "^1.0.0",
498
+ "wrap-ansi": "^9.0.2",
499
+ "wrappy": "^1.0.2",
500
+ "write-file-atomic": "^7.0.0",
501
+ "xhr-write-stream": "^0.1.2",
502
+ "xmlbuilder": "^15.1.1",
503
+ "xtend": "^4.0.2",
504
+ "y18n": "^5.0.8",
505
+ "yaml": "^2.8.2",
506
+ "yargs": "^18.0.0",
507
+ "yargs-parser": "^22.0.0",
508
+ "yauzl": "^2.10.0",
509
+ "yocto-queue": "^0.1.0"
510
+ },
511
+ "devDependencies": {
512
+ "@substrate-system/debug": "^0.9.32",
513
+ "@substrate-system/dom": "^0.1.13",
514
+ "@substrate-system/tapout": "^0.0.34",
515
+ "@substrate-system/tapzero": "^0.10.15",
516
+ "@typescript-eslint/eslint-plugin": "^8.7.0",
517
+ "@typescript-eslint/parser": "^8.7.0",
518
+ "auto-changelog": "^2.4.0",
519
+ "browserslist": "^4.28.1",
520
+ "esbuild": "^0.27.2",
521
+ "eslint": "^8.57.0",
522
+ "eslint-config-standard": "^17.1.0",
523
+ "lightningcss": "^1.30.2",
524
+ "lightningcss-cli": "^1.30.2",
525
+ "markdown-toc": "^1.2.0",
526
+ "stylelint": "^17.0.0",
527
+ "stylelint-config-standard": "^40.0.0",
528
+ "tap-spec": "^5.0.0",
529
+ "tape-run": "^11.0.0",
530
+ "typedoc": "^0.28.1",
531
+ "typescript": "^5.7.3",
532
+ "vite": "^7.3.0"
533
+ },
534
+ "keywords": [
535
+ "tooltip",
536
+ "webcomponent"
537
+ ],
538
+ "homepage": "https://github.com/substrate-system/tooltip",
539
+ "bugs": {
540
+ "url": "https://github.com/substrate-system/tooltip/issues"
541
+ },
542
+ "repository": {
543
+ "type": "git",
544
+ "url": "git+https://github.com/substrate-system/tooltip.git"
545
+ },
546
+ "license": "SEE LICENSE IN LICENSE",
547
+ "author": "nichoth <nichoth@nichoth.com> (https://nichoth.com)"
548
+ }