@hazem3500/komo 0.9.28 → 0.9.29

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 @@
1
+ import{j as e,l as t}from"./chunk-PLSWBSSX.js";function n(n){let{pin:r,root:i}=n,o=r.ownerDocument.defaultView,a=new AbortController,p=a.signal,s={...n.point},l=null,d=!1,u=!1,y=e("section","pin-move");y.setAttribute("role","group"),y.setAttribute("aria-label","Move pin");let c=e("p","","Drag this pin. Arrow keys move it; Shift moves farther. Enter saves; Escape cancels.");c.id=`pin-move-${Math.random().toString(36).slice(2,8)}`;let v=e("span","pin-move-status");v.setAttribute("role","status");let m=e=>{if(u)return;u=!0,a.abort(),l&&r.hasPointerCapture?.(l.pointer)&&r.releasePointerCapture(l.pointer),l=null,y.remove(),delete r.dataset.moving,delete r.dataset.dragging,r.removeAttribute("aria-describedby");let t=s.x!==n.point.x||s.y!==n.point.y;n.finish(e&&t?s:null)},g=(e,t=!1)=>{let r=n.bounds();s={x:Math.max(r.left,Math.min(r.right,e.x)),y:Math.max(r.top,Math.min(r.bottom,e.y))},n.preview(s),t&&(v.textContent=`Pin moved ${Math.round(s.x-n.point.x)} pixels horizontally, ${Math.round(s.y-n.point.y)} vertically. Enter saves.`)};y.append(c,t("Save position",()=>m(!0),"primary"),t("Cancel move",()=>m(!1),"secondary"),v),i.append(y),r.dataset.moving="true",r.dataset.dragging="true",r.setAttribute("aria-describedby",c.id),r.addEventListener("pointerdown",e=>{0!==e.button||l||(e.preventDefault(),e.stopPropagation(),l={pointer:e.pointerId,x:e.clientX,y:e.clientY,point:s},d=!1,r.setPointerCapture(e.pointerId))},{signal:p}),r.addEventListener("pointermove",e=>{if(!l||e.pointerId!==l.pointer)return;let t=e.clientX-l.x,n=e.clientY-l.y;!d&&Math.hypot(t,n)<4||(d=!0,e.preventDefault(),g({x:l.point.x+t,y:l.point.y+n}))},{signal:p}),r.addEventListener("pointerup",e=>{if(!l||e.pointerId!==l.pointer)return;let t=l.pointer;d&&g({x:l.point.x+e.clientX-l.x,y:l.point.y+e.clientY-l.y}),l=null,r.hasPointerCapture?.(t)&&r.releasePointerCapture(t),d&&m(!0)},{signal:p});for(let e of["pointercancel","lostpointercapture"])r.addEventListener(e,()=>{l&&m(!1)},{signal:p});return r.addEventListener("click",e=>{e.preventDefault(),e.stopImmediatePropagation()},{capture:!0,signal:p}),o.addEventListener("keydown",e=>{if("Escape"===e.key)return e.preventDefault(),e.stopImmediatePropagation(),void m(!1);if(!e.composedPath().includes(r)||e.altKey||e.ctrlKey||e.metaKey||e.isComposing)return;let t=e.shiftKey?10:1,n={ArrowLeft:{x:-t,y:0},ArrowRight:{x:t,y:0},ArrowUp:{x:0,y:-t},ArrowDown:{x:0,y:t}}[e.key];!n&&"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),e.stopImmediatePropagation(),n?g({x:s.x+n.x,y:s.y+n.y},!0):m(!0))},{capture:!0,signal:p}),o.addEventListener("resize",()=>m(!1),{signal:p}),r.focus({preventScroll:!0}),{cancel:()=>m(!1)}}export{n as startPinMove};
@@ -0,0 +1,22 @@
1
+ type Point = {
2
+ x: number;
3
+ y: number;
4
+ };
5
+ type Bounds = {
6
+ left: number;
7
+ top: number;
8
+ right: number;
9
+ bottom: number;
10
+ };
11
+ /** Installed only after an explicit Move pin action; ordinary pins have no drag listeners. */
12
+ export declare function startPinMove(options: {
13
+ root: ShadowRoot;
14
+ pin: HTMLButtonElement;
15
+ point: Point;
16
+ bounds(): Bounds;
17
+ preview(point: Point): void;
18
+ finish(point: Point | null): void;
19
+ }): {
20
+ cancel: () => void;
21
+ };
22
+ export {};
package/dist/react.js CHANGED
@@ -1 +1 @@
1
- "use client";import{A as e,c as n,d as t,g as r}from"./chunk-HTMUFH7I.js";import{b as o}from"./chunk-F57BOPTZ.js";import"./chunk-ILX63XAJ.js";import"./chunk-DH22G2S5.js";import"./chunk-RPY7OOOR.js";import"./chunk-53M6AOAX.js";import"./chunk-WGISPOJV.js";import"./chunk-PLSWBSSX.js";import{useEffect as s,useRef as c}from"react";function u(e){let n=c(null);s(()=>{if(n.current&&function(e,n){return[...new Set([...Object.keys(e),...Object.keys(n)])].every(t=>{if("shortcuts"===t||"features"===t||"frame"===t){let r=e[t]??{},o=n[t]??{};return Object.keys({...r,...o}).every(e=>Object.is(r[e],o[e]))}if("design"===t){let t=e.design,r=n.design;if(!t||!r)return t===r;let o=t.themes??[],s=r.themes??[];return t.tokens===r.tokens&&t.components===r.components&&o.length===s.length&&o.every((e,n)=>e===s[n])}if("onboarding"!==t)return Object.is(e[t],n[t]);let r=e.onboarding,o=n.onboarding;return r&&o?Object.keys({...r,...o}).every(e=>"sites"===e?r.sites?.length===o.sites?.length&&(r.sites??[]).every((e,n)=>e===o.sites?.[n]):Object.is(r[e],o[e])):r===o})}(n.current.config,e)||(n.current?.controller.destroy(),n.current=null,!1===e.enabled))return;let t={...e,...e.onboarding?{onboarding:{...e.onboarding,...e.onboarding.sites?{sites:[...e.onboarding.sites]}:{}}}:{}};n.current={config:t,controller:o(t)}}),s(()=>()=>{n.current?.controller.destroy(),n.current=null},[])}function i(e){let r=c(null),o=c(null);return o.current||(o.current=e=>{r.current=e}),s(()=>{if(!0===e.enabled&&r.current)return n(r.current,e.component,e.props,e.onChange)},[e.enabled,e.component]),s(()=>{!0===e.enabled&&t(r.current,e.component,e.props,e.onChange)},[e.enabled,e.component,e.props,e.onChange]),{ref:o.current,"data-komo-inspectable":e.component.id}}function l(e){s(()=>{if(!0!==e.enabled)return;let n=e.root??document.documentElement;return r(n,e.tokens)},[e.root,e.tokens,e.enabled])}export{e as cssVariableTokens,u as useKomo,l as useKomoDesignTokens,i as useKomoInspectable};
1
+ "use client";import{A as e,c as n,d as t,g as r}from"./chunk-HTMUFH7I.js";import{b as o}from"./chunk-YSTPKET2.js";import"./chunk-ILX63XAJ.js";import"./chunk-DH22G2S5.js";import"./chunk-RPY7OOOR.js";import"./chunk-53M6AOAX.js";import"./chunk-WGISPOJV.js";import"./chunk-PLSWBSSX.js";import{useEffect as s,useRef as c}from"react";function u(e){let n=c(null);s(()=>{if(n.current&&function(e,n){return[...new Set([...Object.keys(e),...Object.keys(n)])].every(t=>{if("shortcuts"===t||"features"===t||"frame"===t){let r=e[t]??{},o=n[t]??{};return Object.keys({...r,...o}).every(e=>Object.is(r[e],o[e]))}if("design"===t){let t=e.design,r=n.design;if(!t||!r)return t===r;let o=t.themes??[],s=r.themes??[];return t.tokens===r.tokens&&t.components===r.components&&o.length===s.length&&o.every((e,n)=>e===s[n])}if("onboarding"!==t)return Object.is(e[t],n[t]);let r=e.onboarding,o=n.onboarding;return r&&o?Object.keys({...r,...o}).every(e=>"sites"===e?r.sites?.length===o.sites?.length&&(r.sites??[]).every((e,n)=>e===o.sites?.[n]):Object.is(r[e],o[e])):r===o})}(n.current.config,e)||(n.current?.controller.destroy(),n.current=null,!1===e.enabled))return;let t={...e,...e.onboarding?{onboarding:{...e.onboarding,...e.onboarding.sites?{sites:[...e.onboarding.sites]}:{}}}:{}};n.current={config:t,controller:o(t)}}),s(()=>()=>{n.current?.controller.destroy(),n.current=null},[])}function i(e){let r=c(null),o=c(null);return o.current||(o.current=e=>{r.current=e}),s(()=>{if(!0===e.enabled&&r.current)return n(r.current,e.component,e.props,e.onChange)},[e.enabled,e.component]),s(()=>{!0===e.enabled&&t(r.current,e.component,e.props,e.onChange)},[e.enabled,e.component,e.props,e.onChange]),{ref:o.current,"data-komo-inspectable":e.component.id}}function l(e){s(()=>{if(!0!==e.enabled)return;let n=e.root??document.documentElement;return r(n,e.tokens)},[e.root,e.tokens,e.enabled])}export{e as cssVariableTokens,u as useKomo,l as useKomoDesignTokens,i as useKomoInspectable};