@tatamicks/core 0.3.1 → 1.0.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.
@@ -0,0 +1 @@
1
+ ._label_er4b8_1{position:absolute;font-size:10px;color:#0006;background-color:#fffc;padding:2px 4px;border:none;border-radius:2px;-webkit-user-select:none;user-select:none;cursor:pointer;pointer-events:auto;z-index:2800100;white-space:nowrap;transition:all .15s ease}._label_er4b8_1:hover{color:#000000b3;background-color:#fff}._label_er4b8_1:not([style*=vertical-rl]):hover{transform:translate(-50%) scale(1.1)}._label_er4b8_1[style*=vertical-rl]:hover{transform:translateY(-50%) scale(1.1)}._editor_1xj3w_1{position:absolute;display:flex;gap:4px;background-color:var(--de-bg-primary, #ffffff);border:1px solid var(--de-primary-color, #3b82f6);border-radius:4px;padding:6px;box-shadow:0 2px 8px #00000026;z-index:2800200;pointer-events:auto}._input_1xj3w_14{width:60px;height:24px;padding:2px 6px;border:1px solid var(--de-border-color, #d1d5db);border-radius:3px;font-size:12px;text-align:center}._input_1xj3w_14:focus{outline:none;border-color:var(--de-primary-color, #3b82f6)}._select_1xj3w_29{width:60px;height:24px;padding:2px 4px;border:1px solid var(--de-border-color, #d1d5db);border-radius:3px;font-size:12px;background-color:var(--de-bg-primary, #ffffff);cursor:pointer}._select_1xj3w_29:focus{outline:none;border-color:var(--de-primary-color, #3b82f6)}._button_1xj3w_45{width:24px;height:24px;display:flex;align-items:center;justify-content:center;border:1px solid var(--de-primary-color, #3b82f6);border-radius:3px;background-color:var(--de-primary-color, #3b82f6);color:#fff;font-size:14px;cursor:pointer;transition:background-color .15s ease}._button_1xj3w_45:hover{background-color:var(--de-primary-color, #2563eb)}._button_1xj3w_45:active{background-color:var(--de-primary-dark, #1d4ed8)}._handle_i8g0e_1{position:absolute;background-color:var(--de-bg-primary, #ffffff);border:1px solid var(--de-primary-color, #3b82f6);border-radius:50%;transition:opacity .2s ease,transform .2s ease;z-index:2800000;opacity:0;box-sizing:border-box}._handle_i8g0e_1:hover{opacity:1;transform:scale(1.2)}._handle_i8g0e_1._dragging_i8g0e_19{opacity:1;background-color:var(--de-primary-color, #3b82f6);transform:scale(1.2)}
package/dist/shell.cjs ADDED
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./PalettePanel-Dipvtj7D.cjs"),u=require("./sidebarPortal-C3HszQyp.cjs"),B=require("react");function p(a,o,i){return B.useMemo(()=>{const l=o.map(n=>a.find(S=>S.id===n)).filter(n=>n!==void 0);if(l.length===0)return null;const t=l.map(n=>i(n)),r=Math.min(...t.map(n=>n.left)),c=Math.min(...t.map(n=>n.top)),P=Math.max(...t.map(n=>n.left+n.width)),s=Math.max(...t.map(n=>n.top+n.height));return{left:r,top:c,right:P,bottom:s,width:P-r,height:s-c}},[a,o,i])}exports.ActionBarDivider=e.ActionBarDivider;exports.BackgroundBorderPanel=e.BackgroundBorderPanel;exports.BlockDefaultsPanel=e.BlockDefaultsPanel;exports.BlockOrderPanel=e.BlockOrderPanel;exports.BlockPropertyPanel=e.BlockPropertyPanel;exports.CanvasActionPanel=e.CanvasActionPanel;exports.CanvasActionSection=e.CanvasActionSection;exports.CanvasPanel=e.CanvasPanel;exports.Checkbox=e.Checkbox;exports.CollapsibleSection=e.CollapsibleSection;exports.ColorPicker=e.ColorPicker;exports.DefaultBlockPropertyPanel=e.DefaultBlockPropertyPanel;exports.DefaultCanvasPanel=e.DefaultCanvasPanel;exports.DimensionInput=e.DimensionInput;exports.Dropdown=e.Dropdown;exports.GridSettingsSection=e.GridSettingsSection;exports.GridSizePanel=e.GridSizePanel;exports.IconActionButton=e.IconActionButton;exports.ImportExportPanel=e.ImportExportPanel;exports.LayoutPanel=e.LayoutPanel;exports.MarginPanel=e.MarginPanel;exports.MetaPanel=e.MetaPanel;exports.NumberInput=e.NumberInput;exports.OtherPanel=e.OtherPanel;exports.PalettePanel=e.PalettePanel;exports.PaperSettingsSection=e.PaperSettingsSection;exports.PaperSizePanel=e.PaperSizePanel;exports.PluginPanels=e.PluginPanels;exports.PropertyField=e.PropertyField;exports.SelectionActionBar=e.SelectionActionBar;exports.SelectionActionBarButton=e.SelectionActionBarButton;exports.SelectionActionBarOverlay=e.SelectionActionBarOverlay;exports.SelectionActionBarPanel=e.SelectionActionBarPanel;exports.TabPanel=e.TabPanel;exports.Tabs=e.Tabs;exports.TabsContent=e.TabsContent;exports.TabsList=e.TabsList;exports.TabsTrigger=e.TabsTrigger;exports.TextInput=e.TextInput;exports.getDefaultSelectionActionBarItems=e.getDefaultSelectionActionBarItems;exports.useSelectionActionBar=e.useSelectionActionBar;exports.useSelectionBounds=e.useSelectionBounds;exports.SIDEBAR_PORTAL_PROPS=u.SIDEBAR_PORTAL_PROPS;exports.SIDEBAR_PORTAL_SELECTOR=u.SIDEBAR_PORTAL_SELECTOR;exports.useSelectionBoundingBox=p;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.cjs","sources":["../src/shell/bars/SelectionActionBar/useSelectionBoundingBox.ts"],"sourcesContent":["import { useMemo } from \"react\";\n\nimport type { Block } from \"../../../types/block\";\n\n// px 単位のブロック矩形(getBlockRectPx コールバックの戻り値型)\ninterface BlockRectPx {\n\tleft: number;\n\ttop: number;\n\twidth: number;\n\theight: number;\n}\n\n/**\n * 選択ブロック群全体を囲む bounding box(px 座標)を表す型。\n */\nexport interface SelectionBoundingBox {\n\tleft: number;\n\ttop: number;\n\tright: number;\n\tbottom: number;\n\twidth: number;\n\theight: number;\n}\n\n/**\n * 選択中ブロックたちの bounding box を返す。\n *\n * 選択ブロックが 0 件、または存在しない ID のみの場合は `null` を返す。\n *\n * @remarks\n * **Shell** — 結果は `useMemo` でメモ化される。\n */\nexport function useSelectionBoundingBox(\n\tblocks: Block[],\n\tselectedBlockIds: string[],\n\tgetBlockRectPx: (block: Block) => BlockRectPx,\n): SelectionBoundingBox | null {\n\treturn useMemo(() => {\n\t\tconst selectedBlocks = selectedBlockIds\n\t\t\t.map((id) => blocks.find((b) => b.id === id))\n\t\t\t.filter((b): b is Block => b !== undefined);\n\n\t\tif (selectedBlocks.length === 0) return null;\n\n\t\tconst rects = selectedBlocks.map((b) => getBlockRectPx(b));\n\n\t\tconst left = Math.min(...rects.map((r) => r.left));\n\t\tconst top = Math.min(...rects.map((r) => r.top));\n\t\tconst right = Math.max(...rects.map((r) => r.left + r.width));\n\t\tconst bottom = Math.max(...rects.map((r) => r.top + r.height));\n\n\t\treturn {\n\t\t\tleft,\n\t\t\ttop,\n\t\t\tright,\n\t\t\tbottom,\n\t\t\twidth: right - left,\n\t\t\theight: bottom - top,\n\t\t};\n\t}, [blocks, selectedBlockIds, getBlockRectPx]);\n}\n"],"names":["useSelectionBoundingBox","blocks","selectedBlockIds","getBlockRectPx","useMemo","selectedBlocks","id","b","rects","left","r","top","right","bottom"],"mappings":"4LAgCO,SAASA,EACfC,EACAC,EACAC,EAC8B,CAC9B,OAAOC,EAAAA,QAAQ,IAAM,CACpB,MAAMC,EAAiBH,EACrB,IAAKI,GAAOL,EAAO,KAAMM,GAAMA,EAAE,KAAOD,CAAE,CAAC,EAC3C,OAAQC,GAAkBA,IAAM,MAAS,EAE3C,GAAIF,EAAe,SAAW,EAAG,OAAO,KAExC,MAAMG,EAAQH,EAAe,IAAKE,GAAMJ,EAAeI,CAAC,CAAC,EAEnDE,EAAO,KAAK,IAAI,GAAGD,EAAM,IAAKE,GAAMA,EAAE,IAAI,CAAC,EAC3CC,EAAM,KAAK,IAAI,GAAGH,EAAM,IAAKE,GAAMA,EAAE,GAAG,CAAC,EACzCE,EAAQ,KAAK,IAAI,GAAGJ,EAAM,IAAKE,GAAMA,EAAE,KAAOA,EAAE,KAAK,CAAC,EACtDG,EAAS,KAAK,IAAI,GAAGL,EAAM,IAAKE,GAAMA,EAAE,IAAMA,EAAE,MAAM,CAAC,EAE7D,MAAO,CACN,KAAAD,EACA,IAAAE,EACA,MAAAC,EACA,OAAAC,EACA,MAAOD,EAAQH,EACf,OAAQI,EAASF,CAAA,CAEnB,EAAG,CAACV,EAAQC,EAAkBC,CAAc,CAAC,CAC9C"}
package/dist/shell.mjs ADDED
@@ -0,0 +1,65 @@
1
+ import { A as d, B as f, l as h, m as A, n as g, o as T, c as x, p as C, q as D, r as b, t as v, e as I, h as M, v as O, w as k, G as y, x as E, I as L, y as R, L as w, M as _, z, N as G, O as F, f as N, P as j, E as q, F as H, H as J, d as K, J as Q, S as U, K as V, Q as W, T as X, k as Y, i as Z, j as $, R as aa, g as ea, U as ta, u as na } from "./PalettePanel-CtXsH6Cb.js";
2
+ import { S as oa, a1 as ia } from "./sidebarPortal-C06y4JSP.js";
3
+ import { useMemo as p } from "react";
4
+ function S(t, n, s) {
5
+ return p(() => {
6
+ const o = n.map((a) => t.find((P) => P.id === a)).filter((a) => a !== void 0);
7
+ if (o.length === 0) return null;
8
+ const e = o.map((a) => s(a)), i = Math.min(...e.map((a) => a.left)), l = Math.min(...e.map((a) => a.top)), r = Math.max(...e.map((a) => a.left + a.width)), c = Math.max(...e.map((a) => a.top + a.height));
9
+ return {
10
+ left: i,
11
+ top: l,
12
+ right: r,
13
+ bottom: c,
14
+ width: r - i,
15
+ height: c - l
16
+ };
17
+ }, [t, n, s]);
18
+ }
19
+ export {
20
+ d as ActionBarDivider,
21
+ f as BackgroundBorderPanel,
22
+ h as BlockDefaultsPanel,
23
+ A as BlockOrderPanel,
24
+ g as BlockPropertyPanel,
25
+ T as CanvasActionPanel,
26
+ x as CanvasActionSection,
27
+ C as CanvasPanel,
28
+ D as Checkbox,
29
+ b as CollapsibleSection,
30
+ v as ColorPicker,
31
+ I as DefaultBlockPropertyPanel,
32
+ M as DefaultCanvasPanel,
33
+ O as DimensionInput,
34
+ k as Dropdown,
35
+ y as GridSettingsSection,
36
+ E as GridSizePanel,
37
+ L as IconActionButton,
38
+ R as ImportExportPanel,
39
+ w as LayoutPanel,
40
+ _ as MarginPanel,
41
+ z as MetaPanel,
42
+ G as NumberInput,
43
+ F as OtherPanel,
44
+ N as PalettePanel,
45
+ j as PaperSettingsSection,
46
+ q as PaperSizePanel,
47
+ H as PluginPanels,
48
+ J as PropertyField,
49
+ oa as SIDEBAR_PORTAL_PROPS,
50
+ ia as SIDEBAR_PORTAL_SELECTOR,
51
+ K as SelectionActionBar,
52
+ Q as SelectionActionBarButton,
53
+ U as SelectionActionBarOverlay,
54
+ V as SelectionActionBarPanel,
55
+ W as TabPanel,
56
+ X as Tabs,
57
+ Y as TabsContent,
58
+ Z as TabsList,
59
+ $ as TabsTrigger,
60
+ aa as TextInput,
61
+ ea as getDefaultSelectionActionBarItems,
62
+ ta as useSelectionActionBar,
63
+ S as useSelectionBoundingBox,
64
+ na as useSelectionBounds
65
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell.mjs","sources":["../src/shell/bars/SelectionActionBar/useSelectionBoundingBox.ts"],"sourcesContent":["import { useMemo } from \"react\";\n\nimport type { Block } from \"../../../types/block\";\n\n// px 単位のブロック矩形(getBlockRectPx コールバックの戻り値型)\ninterface BlockRectPx {\n\tleft: number;\n\ttop: number;\n\twidth: number;\n\theight: number;\n}\n\n/**\n * 選択ブロック群全体を囲む bounding box(px 座標)を表す型。\n */\nexport interface SelectionBoundingBox {\n\tleft: number;\n\ttop: number;\n\tright: number;\n\tbottom: number;\n\twidth: number;\n\theight: number;\n}\n\n/**\n * 選択中ブロックたちの bounding box を返す。\n *\n * 選択ブロックが 0 件、または存在しない ID のみの場合は `null` を返す。\n *\n * @remarks\n * **Shell** — 結果は `useMemo` でメモ化される。\n */\nexport function useSelectionBoundingBox(\n\tblocks: Block[],\n\tselectedBlockIds: string[],\n\tgetBlockRectPx: (block: Block) => BlockRectPx,\n): SelectionBoundingBox | null {\n\treturn useMemo(() => {\n\t\tconst selectedBlocks = selectedBlockIds\n\t\t\t.map((id) => blocks.find((b) => b.id === id))\n\t\t\t.filter((b): b is Block => b !== undefined);\n\n\t\tif (selectedBlocks.length === 0) return null;\n\n\t\tconst rects = selectedBlocks.map((b) => getBlockRectPx(b));\n\n\t\tconst left = Math.min(...rects.map((r) => r.left));\n\t\tconst top = Math.min(...rects.map((r) => r.top));\n\t\tconst right = Math.max(...rects.map((r) => r.left + r.width));\n\t\tconst bottom = Math.max(...rects.map((r) => r.top + r.height));\n\n\t\treturn {\n\t\t\tleft,\n\t\t\ttop,\n\t\t\tright,\n\t\t\tbottom,\n\t\t\twidth: right - left,\n\t\t\theight: bottom - top,\n\t\t};\n\t}, [blocks, selectedBlockIds, getBlockRectPx]);\n}\n"],"names":["useSelectionBoundingBox","blocks","selectedBlockIds","getBlockRectPx","useMemo","selectedBlocks","id","b","rects","left","r","top","right","bottom"],"mappings":";;;AAgCO,SAASA,EACfC,GACAC,GACAC,GAC8B;AAC9B,SAAOC,EAAQ,MAAM;AACpB,UAAMC,IAAiBH,EACrB,IAAI,CAACI,MAAOL,EAAO,KAAK,CAACM,MAAMA,EAAE,OAAOD,CAAE,CAAC,EAC3C,OAAO,CAACC,MAAkBA,MAAM,MAAS;AAE3C,QAAIF,EAAe,WAAW,EAAG,QAAO;AAExC,UAAMG,IAAQH,EAAe,IAAI,CAACE,MAAMJ,EAAeI,CAAC,CAAC,GAEnDE,IAAO,KAAK,IAAI,GAAGD,EAAM,IAAI,CAACE,MAAMA,EAAE,IAAI,CAAC,GAC3CC,IAAM,KAAK,IAAI,GAAGH,EAAM,IAAI,CAACE,MAAMA,EAAE,GAAG,CAAC,GACzCE,IAAQ,KAAK,IAAI,GAAGJ,EAAM,IAAI,CAACE,MAAMA,EAAE,OAAOA,EAAE,KAAK,CAAC,GACtDG,IAAS,KAAK,IAAI,GAAGL,EAAM,IAAI,CAACE,MAAMA,EAAE,MAAMA,EAAE,MAAM,CAAC;AAE7D,WAAO;AAAA,MACN,MAAAD;AAAA,MACA,KAAAE;AAAA,MACA,OAAAC;AAAA,MACA,QAAAC;AAAA,MACA,OAAOD,IAAQH;AAAA,MACf,QAAQI,IAASF;AAAA,IAAA;AAAA,EAEnB,GAAG,CAACV,GAAQC,GAAkBC,CAAc,CAAC;AAC9C;"}