@tatamicks/core 0.3.2 → 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.
- package/README.md +518 -81
- package/dist/PalettePanel-CtXsH6Cb.js +5137 -0
- package/dist/PalettePanel-CtXsH6Cb.js.map +1 -0
- package/dist/PalettePanel-Dipvtj7D.cjs +9 -0
- package/dist/PalettePanel-Dipvtj7D.cjs.map +1 -0
- package/dist/PalettePanel.css +1 -0
- package/dist/canvas.cjs +1 -0
- package/dist/canvas.cjs.map +1 -0
- package/dist/canvas.mjs +354 -0
- package/dist/canvas.mjs.map +1 -0
- package/dist/index.cjs +5 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.css +3 -1
- package/dist/index.css.d.ts +2 -0
- package/dist/index.mjs +1424 -6891
- package/dist/index.mjs.map +1 -1
- package/dist/paperSettingsWidget-DgDoBA0P.js +5137 -0
- package/dist/paperSettingsWidget-DgDoBA0P.js.map +1 -0
- package/dist/paperSettingsWidget-sLJsIUxS.cjs +2 -0
- package/dist/paperSettingsWidget-sLJsIUxS.cjs.map +1 -0
- package/dist/paperSettingsWidget.css +1 -0
- package/dist/shell.cjs +1 -0
- package/dist/shell.cjs.map +1 -0
- package/dist/shell.mjs +65 -0
- package/dist/shell.mjs.map +1 -0
- package/dist/sidebarPortal-C06y4JSP.js +723 -0
- package/dist/sidebarPortal-C06y4JSP.js.map +1 -0
- package/dist/sidebarPortal-C3HszQyp.cjs +1 -0
- package/dist/sidebarPortal-C3HszQyp.cjs.map +1 -0
- package/dist/src/canvas.d.ts +2523 -0
- package/dist/src/index.d.ts +1801 -2880
- package/dist/src/shell.d.ts +1982 -0
- package/package.json +21 -8
- package/dist/index.js +0 -70
- package/dist/index.js.map +0 -1
|
@@ -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;"}
|