@activecollab/components 2.0.397 → 2.0.399
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/dist/cjs/presentation/whiteboard/bottomDock.js +194 -0
- package/dist/cjs/presentation/whiteboard/bottomDock.js.map +1 -0
- package/dist/cjs/presentation/whiteboard/canvasElements.js +877 -0
- package/dist/cjs/presentation/whiteboard/canvasElements.js.map +1 -0
- package/dist/cjs/presentation/whiteboard/elements.js +816 -0
- package/dist/cjs/presentation/whiteboard/elements.js.map +1 -0
- package/dist/cjs/presentation/whiteboard/fileElement.js +457 -0
- package/dist/cjs/presentation/whiteboard/fileElement.js.map +1 -0
- package/dist/cjs/presentation/whiteboard/glyphs.js +67 -0
- package/dist/cjs/presentation/whiteboard/glyphs.js.map +1 -0
- package/dist/cjs/presentation/whiteboard/inspector.js +884 -0
- package/dist/cjs/presentation/whiteboard/inspector.js.map +1 -0
- package/dist/cjs/presentation/whiteboard/linkElement.js +357 -0
- package/dist/cjs/presentation/whiteboard/linkElement.js.map +1 -0
- package/dist/cjs/presentation/whiteboard/outline.js +966 -0
- package/dist/cjs/presentation/whiteboard/outline.js.map +1 -0
- package/dist/cjs/presentation/whiteboard/peopleMenu.js +516 -0
- package/dist/cjs/presentation/whiteboard/peopleMenu.js.map +1 -0
- package/dist/cjs/presentation/whiteboard/settingsMenu.js +177 -0
- package/dist/cjs/presentation/whiteboard/settingsMenu.js.map +1 -0
- package/dist/esm/presentation/whiteboard/bottomDock.d.ts +51 -0
- package/dist/esm/presentation/whiteboard/bottomDock.d.ts.map +1 -0
- package/dist/esm/presentation/whiteboard/bottomDock.js +162 -0
- package/dist/esm/presentation/whiteboard/bottomDock.js.map +1 -0
- package/dist/esm/presentation/whiteboard/canvasElements.d.ts +61 -0
- package/dist/esm/presentation/whiteboard/canvasElements.d.ts.map +1 -0
- package/dist/esm/presentation/whiteboard/canvasElements.js +746 -0
- package/dist/esm/presentation/whiteboard/canvasElements.js.map +1 -0
- package/dist/esm/presentation/whiteboard/elements.d.ts +180 -0
- package/dist/esm/presentation/whiteboard/elements.d.ts.map +1 -0
- package/dist/esm/presentation/whiteboard/elements.js +736 -0
- package/dist/esm/presentation/whiteboard/elements.js.map +1 -0
- package/dist/esm/presentation/whiteboard/fileElement.d.ts +113 -0
- package/dist/esm/presentation/whiteboard/fileElement.d.ts.map +1 -0
- package/dist/esm/presentation/whiteboard/fileElement.js +430 -0
- package/dist/esm/presentation/whiteboard/fileElement.js.map +1 -0
- package/dist/esm/presentation/whiteboard/glyphs.d.ts +32 -0
- package/dist/esm/presentation/whiteboard/glyphs.d.ts.map +1 -0
- package/dist/esm/presentation/whiteboard/glyphs.js +50 -0
- package/dist/esm/presentation/whiteboard/glyphs.js.map +1 -0
- package/dist/esm/presentation/whiteboard/inspector.d.ts +100 -0
- package/dist/esm/presentation/whiteboard/inspector.d.ts.map +1 -0
- package/dist/esm/presentation/whiteboard/inspector.js +753 -0
- package/dist/esm/presentation/whiteboard/inspector.js.map +1 -0
- package/dist/esm/presentation/whiteboard/linkElement.d.ts +97 -0
- package/dist/esm/presentation/whiteboard/linkElement.d.ts.map +1 -0
- package/dist/esm/presentation/whiteboard/linkElement.js +327 -0
- package/dist/esm/presentation/whiteboard/linkElement.js.map +1 -0
- package/dist/esm/presentation/whiteboard/outline.d.ts +89 -0
- package/dist/esm/presentation/whiteboard/outline.d.ts.map +1 -0
- package/dist/esm/presentation/whiteboard/outline.js +870 -0
- package/dist/esm/presentation/whiteboard/outline.js.map +1 -0
- package/dist/esm/presentation/whiteboard/peopleMenu.d.ts +44 -0
- package/dist/esm/presentation/whiteboard/peopleMenu.d.ts.map +1 -0
- package/dist/esm/presentation/whiteboard/peopleMenu.js +440 -0
- package/dist/esm/presentation/whiteboard/peopleMenu.js.map +1 -0
- package/dist/esm/presentation/whiteboard/settingsMenu.d.ts +13 -0
- package/dist/esm/presentation/whiteboard/settingsMenu.d.ts.map +1 -0
- package/dist/esm/presentation/whiteboard/settingsMenu.js +155 -0
- package/dist/esm/presentation/whiteboard/settingsMenu.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,884 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.sameColor = exports.elementTraits = exports.colorName = exports.TYPE_LABEL = exports.TRANSPARENT_OPTION = exports.StyledSegmented = exports.StyledPropRow = exports.StyledPropGroups = exports.StyledPropGroup = exports.StyledInspectorSidebar = exports.StyledInspectorResizer = exports.StyledInspectorHeader = exports.StyledInspectorEmpty = exports.StyledInspectorBody = exports.StyledFieldGrid = exports.StyledControl = exports.StyledCheckboxRow = exports.StyledBody = exports.StyledAutoField = exports.RightInspector = exports.OptionSelect = exports.NumberField = exports.ColorPickerField = exports.AutoField = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
9
|
+
var _elements = require("./elements");
|
|
10
|
+
var _fileElement = require("./fileElement");
|
|
11
|
+
var _outline = require("./outline");
|
|
12
|
+
var _Checkbox = require("../../components/Checkbox");
|
|
13
|
+
var _ChooseV = require("../../components/ChooseV2");
|
|
14
|
+
var _Dot = require("../../components/Dot");
|
|
15
|
+
var _EditableText = require("../../components/EditableText");
|
|
16
|
+
var _IconButton = require("../../components/IconButton");
|
|
17
|
+
var _Icons = require("../../components/Icons");
|
|
18
|
+
var _Input = require("../../components/Input");
|
|
19
|
+
var _Label = require("../../components/Label");
|
|
20
|
+
var _Select = require("../../components/Select");
|
|
21
|
+
var _SelectTrigger = require("../../components/SelectTrigger");
|
|
22
|
+
var _Tooltip = require("../../components/Tooltip");
|
|
23
|
+
var _Typography = require("../../components/Typography");
|
|
24
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
25
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
26
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
27
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
28
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
29
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
30
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
31
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
32
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
33
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
34
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
35
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
36
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
37
|
+
/* ------------------------------------------------------------------ */
|
|
38
|
+
/* Right Inspector — selected-element properties panel */
|
|
39
|
+
/* ------------------------------------------------------------------ */
|
|
40
|
+
|
|
41
|
+
/* Which right-docked panel is open. Only "inspector" is built here; "comments"
|
|
42
|
+
is reserved for the next iteration. */
|
|
43
|
+
|
|
44
|
+
/* ── Inspector capability traits ──────────────────────────────────────────
|
|
45
|
+
The Inspector is TRAIT-DRIVEN: a selected element declares which property
|
|
46
|
+
groups it supports, and only those groups render. This is the "interface
|
|
47
|
+
with implementation traits" model — the interface is the full set of groups,
|
|
48
|
+
and each element kind overrides the flags it does not support (a sticky has
|
|
49
|
+
no stroke, and its height is auto because the note grows with its content).
|
|
50
|
+
New element kinds slot in by returning their own trait set. */
|
|
51
|
+
|
|
52
|
+
var elementTraits = exports.elementTraits = function elementTraits(def) {
|
|
53
|
+
return def.kind === "sticky" ? {
|
|
54
|
+
geometry: true,
|
|
55
|
+
fill: true,
|
|
56
|
+
fillTransparent: false,
|
|
57
|
+
stroke: false,
|
|
58
|
+
text: true,
|
|
59
|
+
autoHeight: true
|
|
60
|
+
} : {
|
|
61
|
+
geometry: true,
|
|
62
|
+
fill: true,
|
|
63
|
+
fillTransparent: true,
|
|
64
|
+
stroke: true,
|
|
65
|
+
text: true
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
var TYPE_LABEL = exports.TYPE_LABEL = {
|
|
69
|
+
rectangle: "Rectangle",
|
|
70
|
+
roundedRectangle: "Rounded Rectangle",
|
|
71
|
+
circle: "Circle",
|
|
72
|
+
triangle: "Triangle"
|
|
73
|
+
};
|
|
74
|
+
var sameColor = exports.sameColor = function sameColor(a, b) {
|
|
75
|
+
return (a !== null && a !== void 0 ? a : "").toLowerCase() === b.toLowerCase();
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
/* Right dock — mirrors StyledOutlineSidebar but docked on the RIGHT: border on
|
|
79
|
+
the left edge, resizer on the left edge. Same 260–780 width band. */
|
|
80
|
+
var StyledInspectorSidebar = exports.StyledInspectorSidebar = _styledComponents.default.aside.withConfig({
|
|
81
|
+
displayName: "inspector__StyledInspectorSidebar",
|
|
82
|
+
componentId: "sc-do334k-0"
|
|
83
|
+
})(["flex-shrink:0;position:relative;box-sizing:border-box;display:flex;flex-direction:column;border-left:1px solid var(--selectable);background-color:var(--page-paper-main);font-family:-apple-system,BlinkMacSystemFont,\"Roboto\",\"Helvetica Neue\",Arial,sans-serif;"]);
|
|
84
|
+
|
|
85
|
+
/* Grab strip on the LEFT edge, because the panel is docked right — dragging it
|
|
86
|
+
left widens. Same token pair as the outline resizer: selectable grey at
|
|
87
|
+
rest, the hover token while grabbed. */
|
|
88
|
+
var StyledInspectorResizer = exports.StyledInspectorResizer = _styledComponents.default.div.withConfig({
|
|
89
|
+
displayName: "inspector__StyledInspectorResizer",
|
|
90
|
+
componentId: "sc-do334k-1"
|
|
91
|
+
})(["position:absolute;top:0;bottom:0;left:-2px;width:5px;cursor:col-resize;z-index:2;&::after{content:\"\";position:absolute;top:0;bottom:0;left:2px;width:1px;background-color:var(--selectable-active);opacity:0;transition:opacity 150ms ease;}&:hover::after,&.resizing::after{opacity:1;}"]);
|
|
92
|
+
var StyledInspectorBody = exports.StyledInspectorBody = _styledComponents.default.div.withConfig({
|
|
93
|
+
displayName: "inspector__StyledInspectorBody",
|
|
94
|
+
componentId: "sc-do334k-2"
|
|
95
|
+
})(["flex:1;overflow-y:auto;display:flex;flex-direction:column;"]);
|
|
96
|
+
|
|
97
|
+
/* Wraps the property groups. The Properties/Comments switch above does the
|
|
98
|
+
separating, so the first group drops its top hairline — no divider directly
|
|
99
|
+
under the header, matching the left sidebar. Inner groups keep separators. */
|
|
100
|
+
var StyledPropGroups = exports.StyledPropGroups = _styledComponents.default.div.withConfig({
|
|
101
|
+
displayName: "inspector__StyledPropGroups",
|
|
102
|
+
componentId: "sc-do334k-3"
|
|
103
|
+
})(["display:flex;flex-direction:column;> div:first-child{border-top:none;}"]);
|
|
104
|
+
var StyledInspectorHeader = exports.StyledInspectorHeader = _styledComponents.default.div.withConfig({
|
|
105
|
+
displayName: "inspector__StyledInspectorHeader",
|
|
106
|
+
componentId: "sc-do334k-4"
|
|
107
|
+
})(["display:flex;align-items:center;gap:8px;height:56px;padding:0 16px;box-sizing:border-box;flex-shrink:0;.inspector-type-icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0;color:var(--color-theme-700);}.inspector-type-icon svg{width:20px;height:20px;}.inspector-name{flex:1;min-width:0;}"]);
|
|
108
|
+
|
|
109
|
+
/* Empty state — same muted treatment the outline uses for unnamed rows. */
|
|
110
|
+
var StyledInspectorEmpty = exports.StyledInspectorEmpty = _styledComponents.default.div.withConfig({
|
|
111
|
+
displayName: "inspector__StyledInspectorEmpty",
|
|
112
|
+
componentId: "sc-do334k-5"
|
|
113
|
+
})(["flex:1;display:flex;align-items:center;justify-content:center;padding:24px;text-align:center;color:var(--color-theme-600);"]);
|
|
114
|
+
|
|
115
|
+
/* Non-collapsible section: bold title, no chevron / drag handle, separated from
|
|
116
|
+
the section above by a hairline. */
|
|
117
|
+
var StyledPropGroup = exports.StyledPropGroup = _styledComponents.default.div.withConfig({
|
|
118
|
+
displayName: "inspector__StyledPropGroup",
|
|
119
|
+
componentId: "sc-do334k-6"
|
|
120
|
+
})(["display:flex;flex-direction:column;gap:12px;padding:16px;border-top:1px solid var(--border-primary);.group-title{color:var(--color-theme-800);}"]);
|
|
121
|
+
var StyledPropRow = exports.StyledPropRow = _styledComponents.default.div.withConfig({
|
|
122
|
+
displayName: "inspector__StyledPropRow",
|
|
123
|
+
componentId: "sc-do334k-7"
|
|
124
|
+
})(["display:flex;flex-direction:column;gap:4px;"]);
|
|
125
|
+
var StyledFieldGrid = exports.StyledFieldGrid = _styledComponents.default.div.withConfig({
|
|
126
|
+
displayName: "inspector__StyledFieldGrid",
|
|
127
|
+
componentId: "sc-do334k-8"
|
|
128
|
+
})(["display:grid;grid-template-columns:1fr 1fr;gap:12px;"]);
|
|
129
|
+
|
|
130
|
+
/* InputNumber's wrapper is a fixed 360px and SelectTrigger a fixed 300px — both
|
|
131
|
+
overflow the narrow dock, so force every inspector control to fill its cell. */
|
|
132
|
+
var StyledControl = exports.StyledControl = _styledComponents.default.div.withConfig({
|
|
133
|
+
displayName: "inspector__StyledControl",
|
|
134
|
+
componentId: "sc-do334k-9"
|
|
135
|
+
})(["width:100%;&.disabled{opacity:0.4;pointer-events:none;}.c-input-wrapper{width:100%;}.wb-inspector-trigger{width:100%;}.wb-color-value{display:flex;align-items:center;gap:8px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.wb-color-value .wb-transparent-swatch{flex:none;color:var(--color-theme-500);}"]);
|
|
136
|
+
|
|
137
|
+
/* Locked checkbox row — the DS Checkbox renders only the box, so it is paired
|
|
138
|
+
with a Label the way the design system expects. */
|
|
139
|
+
var StyledCheckboxRow = exports.StyledCheckboxRow = _styledComponents.default.div.withConfig({
|
|
140
|
+
displayName: "inspector__StyledCheckboxRow",
|
|
141
|
+
componentId: "sc-do334k-10"
|
|
142
|
+
})(["display:flex;align-items:center;gap:8px;"]);
|
|
143
|
+
|
|
144
|
+
/* The element body is HTML (the API's `body` field). The Inspector renders it
|
|
145
|
+
formatted and read-only for now — editing comes later. Raw text needs an
|
|
146
|
+
explicit font-family (no global reset), and the child tags get light prose
|
|
147
|
+
styling. */
|
|
148
|
+
var StyledBody = exports.StyledBody = _styledComponents.default.div.withConfig({
|
|
149
|
+
displayName: "inspector__StyledBody",
|
|
150
|
+
componentId: "sc-do334k-11"
|
|
151
|
+
})(["width:100%;max-height:140px;overflow-y:auto;font-family:-apple-system,BlinkMacSystemFont,\"Roboto\",\"Helvetica Neue\",Arial,sans-serif;font-size:13px;line-height:1.5;color:var(--color-theme-800);p{margin:0 0 8px;}p:last-child{margin-bottom:0;}ul,ol{margin:0 0 8px;padding-left:18px;}li{margin:2px 0;}strong{font-weight:600;}em{font-style:italic;}a{color:var(--color-primary);}"]);
|
|
152
|
+
|
|
153
|
+
/* Read-only "Auto" field for an auto-sized dimension (a sticky's height). */
|
|
154
|
+
var StyledAutoField = exports.StyledAutoField = _styledComponents.default.div.withConfig({
|
|
155
|
+
displayName: "inspector__StyledAutoField",
|
|
156
|
+
componentId: "sc-do334k-12"
|
|
157
|
+
})(["height:32px;display:flex;align-items:center;padding:0 8px;box-sizing:border-box;border:1px solid var(--color-theme-400);border-radius:var(--ac-br-8);background-color:var(--color-theme-200);color:var(--color-theme-600);font-size:13px;"]);
|
|
158
|
+
var StyledSegmented = exports.StyledSegmented = _styledComponents.default.div.withConfig({
|
|
159
|
+
displayName: "inspector__StyledSegmented",
|
|
160
|
+
componentId: "sc-do334k-13"
|
|
161
|
+
})(["display:flex;gap:4px;svg{display:block;width:16px;height:16px;}"]);
|
|
162
|
+
var NumberField = exports.NumberField = function NumberField(_ref) {
|
|
163
|
+
var label = _ref.label,
|
|
164
|
+
value = _ref.value,
|
|
165
|
+
min = _ref.min,
|
|
166
|
+
unit = _ref.unit,
|
|
167
|
+
onCommit = _ref.onCommit;
|
|
168
|
+
return /*#__PURE__*/_react.default.createElement(StyledPropRow, null, /*#__PURE__*/_react.default.createElement(_Label.Label, {
|
|
169
|
+
size: "small",
|
|
170
|
+
weight: "regular"
|
|
171
|
+
}, label), /*#__PURE__*/_react.default.createElement(StyledControl, null, /*#__PURE__*/_react.default.createElement(_Input.InputNumber, {
|
|
172
|
+
className: "wb-inspector-num",
|
|
173
|
+
value: value,
|
|
174
|
+
decimalLength: 0,
|
|
175
|
+
min: min,
|
|
176
|
+
update: true,
|
|
177
|
+
endAdornment: unit ? /*#__PURE__*/_react.default.createElement(_Input.InputAdornment, {
|
|
178
|
+
disablePointerEvents: true
|
|
179
|
+
}, /*#__PURE__*/_react.default.createElement(_Typography.Caption1, {
|
|
180
|
+
color: "secondary"
|
|
181
|
+
}, unit)) : undefined,
|
|
182
|
+
onChange: function onChange(next) {
|
|
183
|
+
if (next !== undefined && !Number.isNaN(next)) {
|
|
184
|
+
onCommit(Math.round(next));
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
})));
|
|
188
|
+
};
|
|
189
|
+
var AutoField = exports.AutoField = function AutoField(_ref2) {
|
|
190
|
+
var label = _ref2.label;
|
|
191
|
+
return /*#__PURE__*/_react.default.createElement(StyledPropRow, null, /*#__PURE__*/_react.default.createElement(_Label.Label, {
|
|
192
|
+
size: "small",
|
|
193
|
+
weight: "regular"
|
|
194
|
+
}, label), /*#__PURE__*/_react.default.createElement(StyledAutoField, null, "Auto"));
|
|
195
|
+
};
|
|
196
|
+
var OptionSelect = exports.OptionSelect = function OptionSelect(_ref3) {
|
|
197
|
+
var options = _ref3.options,
|
|
198
|
+
value = _ref3.value,
|
|
199
|
+
triggerLabel = _ref3.triggerLabel,
|
|
200
|
+
_onChange = _ref3.onChange;
|
|
201
|
+
return /*#__PURE__*/_react.default.createElement(StyledControl, null, /*#__PURE__*/_react.default.createElement(_Select.Select, {
|
|
202
|
+
type: "single",
|
|
203
|
+
disableSearch: true,
|
|
204
|
+
forceCloseMenu: true,
|
|
205
|
+
options: options,
|
|
206
|
+
selected: value,
|
|
207
|
+
onChange: function onChange(next) {
|
|
208
|
+
return _onChange(Array.isArray(next) ? next[0] : next);
|
|
209
|
+
},
|
|
210
|
+
target: /*#__PURE__*/_react.default.createElement(_SelectTrigger.SelectTrigger, {
|
|
211
|
+
className: "wb-inspector-trigger"
|
|
212
|
+
}, triggerLabel)
|
|
213
|
+
}));
|
|
214
|
+
};
|
|
215
|
+
var TRANSPARENT_OPTION = exports.TRANSPARENT_OPTION = {
|
|
216
|
+
id: "transparent",
|
|
217
|
+
name: "Transparent",
|
|
218
|
+
color: "transparent",
|
|
219
|
+
textColor: "transparent"
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
/* The name shown on the color picker's trigger, resolved from the current hex. */
|
|
223
|
+
var colorName = exports.colorName = function colorName(hex) {
|
|
224
|
+
if (!hex || sameColor(hex, "transparent")) {
|
|
225
|
+
return "Transparent";
|
|
226
|
+
}
|
|
227
|
+
var match = _elements.COLOR_OPTIONS.find(function (option) {
|
|
228
|
+
return sameColor(hex, option.color);
|
|
229
|
+
});
|
|
230
|
+
return match ? match.name : "Custom";
|
|
231
|
+
};
|
|
232
|
+
/* The regular design-system named-colour picker (the one in the label dialogs):
|
|
233
|
+
a Select whose trigger is a Dot + colour name, and whose menu is the standard
|
|
234
|
+
dot-and-radio list. Custom colours are deferred. */
|
|
235
|
+
var ColorPickerField = exports.ColorPickerField = function ColorPickerField(_ref4) {
|
|
236
|
+
var value = _ref4.value,
|
|
237
|
+
disabled = _ref4.disabled,
|
|
238
|
+
includeTransparent = _ref4.includeTransparent,
|
|
239
|
+
onSelect = _ref4.onSelect;
|
|
240
|
+
var options = includeTransparent ? [TRANSPARENT_OPTION, ..._elements.COLOR_OPTIONS] : _elements.COLOR_OPTIONS;
|
|
241
|
+
var isTransparent = !value || sameColor(value, "transparent");
|
|
242
|
+
return /*#__PURE__*/_react.default.createElement(StyledControl, {
|
|
243
|
+
className: disabled ? "disabled" : undefined
|
|
244
|
+
}, /*#__PURE__*/_react.default.createElement(_Select.Select, {
|
|
245
|
+
type: "single",
|
|
246
|
+
disableSearch: true,
|
|
247
|
+
forceCloseMenu: true,
|
|
248
|
+
options: options,
|
|
249
|
+
selected: isTransparent ? "transparent" : value,
|
|
250
|
+
onChange: function onChange(next) {
|
|
251
|
+
return onSelect(String(Array.isArray(next) ? next[0] : next));
|
|
252
|
+
},
|
|
253
|
+
target: /*#__PURE__*/_react.default.createElement(_SelectTrigger.SelectTrigger, {
|
|
254
|
+
className: "wb-inspector-trigger"
|
|
255
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
256
|
+
className: "wb-color-value"
|
|
257
|
+
}, isTransparent ? /*#__PURE__*/_react.default.createElement(_Icons.CircleSlashIcon, {
|
|
258
|
+
width: 14,
|
|
259
|
+
height: 14,
|
|
260
|
+
fill: "currentColor",
|
|
261
|
+
className: "wb-transparent-swatch"
|
|
262
|
+
}) : /*#__PURE__*/_react.default.createElement(_Dot.Dot, {
|
|
263
|
+
color: value,
|
|
264
|
+
size: 14
|
|
265
|
+
}), colorName(value)))
|
|
266
|
+
}));
|
|
267
|
+
};
|
|
268
|
+
var RightInspector = exports.RightInspector = function RightInspector(_ref5) {
|
|
269
|
+
var _sizes$def$id, _positions$def$id, _rotations$def$id, _names$def$id, _shape$align, _BORDER_STYLE_OPTIONS, _BORDER_STYLE_OPTIONS2;
|
|
270
|
+
var selectedId = _ref5.selectedId,
|
|
271
|
+
positions = _ref5.positions,
|
|
272
|
+
setPositions = _ref5.setPositions,
|
|
273
|
+
sizes = _ref5.sizes,
|
|
274
|
+
setSizes = _ref5.setSizes,
|
|
275
|
+
rotations = _ref5.rotations,
|
|
276
|
+
setRotations = _ref5.setRotations,
|
|
277
|
+
shapes = _ref5.shapes,
|
|
278
|
+
setShapes = _ref5.setShapes,
|
|
279
|
+
stickyStyle = _ref5.stickyStyle,
|
|
280
|
+
setStickyStyle = _ref5.setStickyStyle,
|
|
281
|
+
links = _ref5.links,
|
|
282
|
+
setLinks = _ref5.setLinks,
|
|
283
|
+
files = _ref5.files,
|
|
284
|
+
setFiles = _ref5.setFiles,
|
|
285
|
+
createdShapes = _ref5.createdShapes,
|
|
286
|
+
locks = _ref5.locks,
|
|
287
|
+
setLocks = _ref5.setLocks;
|
|
288
|
+
var _useState = (0, _react.useState)(_outline.OUTLINE_WIDTH),
|
|
289
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
290
|
+
width = _useState2[0],
|
|
291
|
+
setWidth = _useState2[1];
|
|
292
|
+
var _useState3 = (0, _react.useState)(false),
|
|
293
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
294
|
+
resizing = _useState4[0],
|
|
295
|
+
setResizing = _useState4[1];
|
|
296
|
+
/* Mock only — element display names are not persisted anywhere; they default
|
|
297
|
+
to the type label until renamed here. */
|
|
298
|
+
var _useState5 = (0, _react.useState)({}),
|
|
299
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
300
|
+
names = _useState6[0],
|
|
301
|
+
setNames = _useState6[1];
|
|
302
|
+
/* Which inspector tab is showing: the property groups we design, or the
|
|
303
|
+
upcoming comments stream (details TBD). */
|
|
304
|
+
var _useState7 = (0, _react.useState)("properties"),
|
|
305
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
306
|
+
tab = _useState8[0],
|
|
307
|
+
setTab = _useState8[1];
|
|
308
|
+
|
|
309
|
+
/* Docked right, so the grab strip is on the LEFT edge and dragging left
|
|
310
|
+
widens: the delta is subtracted rather than added (see LeftSidebar). */
|
|
311
|
+
var startResize = (0, _react.useCallback)(function (event) {
|
|
312
|
+
var _event$currentTarget$, _event$currentTarget$2;
|
|
313
|
+
event.preventDefault();
|
|
314
|
+
var startX = event.clientX;
|
|
315
|
+
var startWidth = (_event$currentTarget$ = (_event$currentTarget$2 = event.currentTarget.parentElement) === null || _event$currentTarget$2 === void 0 ? void 0 : _event$currentTarget$2.offsetWidth) !== null && _event$currentTarget$ !== void 0 ? _event$currentTarget$ : 0;
|
|
316
|
+
var previousUserSelect = document.body.style.userSelect;
|
|
317
|
+
setResizing(true);
|
|
318
|
+
document.body.style.userSelect = "none";
|
|
319
|
+
document.body.style.cursor = "col-resize";
|
|
320
|
+
var handleMove = function handleMove(moveEvent) {
|
|
321
|
+
var next = startWidth - (moveEvent.clientX - startX);
|
|
322
|
+
setWidth(Math.min(_outline.OUTLINE_MAX_WIDTH, Math.max(_outline.OUTLINE_MIN_WIDTH, next)));
|
|
323
|
+
};
|
|
324
|
+
var _handleUp = function handleUp() {
|
|
325
|
+
setResizing(false);
|
|
326
|
+
document.body.style.userSelect = previousUserSelect;
|
|
327
|
+
document.body.style.cursor = "";
|
|
328
|
+
window.removeEventListener("mousemove", handleMove);
|
|
329
|
+
window.removeEventListener("mouseup", _handleUp);
|
|
330
|
+
};
|
|
331
|
+
window.addEventListener("mousemove", handleMove);
|
|
332
|
+
window.addEventListener("mouseup", _handleUp);
|
|
333
|
+
}, []);
|
|
334
|
+
var def = selectedId ? [..._elements.CANVAS_ELEMENTS, ...createdShapes].find(function (element) {
|
|
335
|
+
return element.id === selectedId;
|
|
336
|
+
}) : undefined;
|
|
337
|
+
var linkDef = selectedId ? links.find(function (link) {
|
|
338
|
+
return link.id === selectedId;
|
|
339
|
+
}) : undefined;
|
|
340
|
+
var fileDef = selectedId ? files.find(function (file) {
|
|
341
|
+
return file.id === selectedId;
|
|
342
|
+
}) : undefined;
|
|
343
|
+
var shell = function shell(content) {
|
|
344
|
+
return /*#__PURE__*/_react.default.createElement(StyledInspectorSidebar, {
|
|
345
|
+
style: {
|
|
346
|
+
width
|
|
347
|
+
}
|
|
348
|
+
}, /*#__PURE__*/_react.default.createElement(StyledInspectorResizer, {
|
|
349
|
+
className: resizing ? "resizing" : "",
|
|
350
|
+
onMouseDown: startResize,
|
|
351
|
+
role: "separator",
|
|
352
|
+
"aria-orientation": "vertical",
|
|
353
|
+
"aria-label": "Resize inspector"
|
|
354
|
+
}), content);
|
|
355
|
+
};
|
|
356
|
+
|
|
357
|
+
/* Description — inline, multi-line editable text, shown first for every
|
|
358
|
+
element kind. */
|
|
359
|
+
/* Read-only formatted body (HTML from the API's `body` field). No label; when
|
|
360
|
+
the body is empty the field is not rendered at all. No edit yet. */
|
|
361
|
+
var renderBody = function renderBody(id) {
|
|
362
|
+
var _ELEMENT_BODIES$id;
|
|
363
|
+
var html = (_ELEMENT_BODIES$id = _elements.ELEMENT_BODIES[id]) !== null && _ELEMENT_BODIES$id !== void 0 ? _ELEMENT_BODIES$id : "";
|
|
364
|
+
if (!html) {
|
|
365
|
+
return null;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
// eslint-disable-next-line react/no-danger
|
|
369
|
+
return /*#__PURE__*/_react.default.createElement(StyledBody, {
|
|
370
|
+
dangerouslySetInnerHTML: {
|
|
371
|
+
__html: html
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
};
|
|
375
|
+
|
|
376
|
+
/* The Locked checkbox — shown for every element kind, toggling a design lock
|
|
377
|
+
flag keyed by element id. */
|
|
378
|
+
var renderLocked = function renderLocked(id) {
|
|
379
|
+
var _locks$id;
|
|
380
|
+
return /*#__PURE__*/_react.default.createElement(StyledCheckboxRow, null, /*#__PURE__*/_react.default.createElement(_Checkbox.Checkbox, {
|
|
381
|
+
id: "wb-lock-".concat(id),
|
|
382
|
+
checked: (_locks$id = locks[id]) !== null && _locks$id !== void 0 ? _locks$id : false,
|
|
383
|
+
onChange: function onChange() {
|
|
384
|
+
return setLocks(function (current) {
|
|
385
|
+
var _current$id;
|
|
386
|
+
return _objectSpread(_objectSpread({}, current), {}, {
|
|
387
|
+
[id]: !((_current$id = current[id]) !== null && _current$id !== void 0 ? _current$id : false)
|
|
388
|
+
});
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
}), /*#__PURE__*/_react.default.createElement(_Label.Label, {
|
|
392
|
+
htmlFor: "wb-lock-".concat(id),
|
|
393
|
+
size: "small",
|
|
394
|
+
weight: "regular"
|
|
395
|
+
}, "Locked"));
|
|
396
|
+
};
|
|
397
|
+
|
|
398
|
+
/* Geometry for a card (link / file): X/Y from the shared positions map, an
|
|
399
|
+
editable width and an auto height (cards are content-sized). Cards cannot
|
|
400
|
+
be rotated, so there is no Rotation field. */
|
|
401
|
+
var renderCardGeometry = function renderCardGeometry(id, cardWidth, onWidth) {
|
|
402
|
+
var _positions$id;
|
|
403
|
+
var cardPosition = (_positions$id = positions[id]) !== null && _positions$id !== void 0 ? _positions$id : {
|
|
404
|
+
x: 0,
|
|
405
|
+
y: 0
|
|
406
|
+
};
|
|
407
|
+
return /*#__PURE__*/_react.default.createElement(StyledPropGroup, null, /*#__PURE__*/_react.default.createElement(_Typography.Body2, {
|
|
408
|
+
weight: "bold",
|
|
409
|
+
className: "group-title"
|
|
410
|
+
}, "Geometry"), /*#__PURE__*/_react.default.createElement(StyledFieldGrid, null, /*#__PURE__*/_react.default.createElement(NumberField, {
|
|
411
|
+
label: "X",
|
|
412
|
+
unit: "px",
|
|
413
|
+
value: cardPosition.x,
|
|
414
|
+
onCommit: function onCommit(next) {
|
|
415
|
+
return setPositions(function (current) {
|
|
416
|
+
var _current$id2;
|
|
417
|
+
return _objectSpread(_objectSpread({}, current), {}, {
|
|
418
|
+
[id]: _objectSpread(_objectSpread({}, (_current$id2 = current[id]) !== null && _current$id2 !== void 0 ? _current$id2 : {
|
|
419
|
+
x: 0,
|
|
420
|
+
y: 0
|
|
421
|
+
}), {}, {
|
|
422
|
+
x: next
|
|
423
|
+
})
|
|
424
|
+
});
|
|
425
|
+
});
|
|
426
|
+
}
|
|
427
|
+
}), /*#__PURE__*/_react.default.createElement(NumberField, {
|
|
428
|
+
label: "Y",
|
|
429
|
+
unit: "px",
|
|
430
|
+
value: cardPosition.y,
|
|
431
|
+
onCommit: function onCommit(next) {
|
|
432
|
+
return setPositions(function (current) {
|
|
433
|
+
var _current$id3;
|
|
434
|
+
return _objectSpread(_objectSpread({}, current), {}, {
|
|
435
|
+
[id]: _objectSpread(_objectSpread({}, (_current$id3 = current[id]) !== null && _current$id3 !== void 0 ? _current$id3 : {
|
|
436
|
+
x: 0,
|
|
437
|
+
y: 0
|
|
438
|
+
}), {}, {
|
|
439
|
+
y: next
|
|
440
|
+
})
|
|
441
|
+
});
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
})), /*#__PURE__*/_react.default.createElement(StyledFieldGrid, null, /*#__PURE__*/_react.default.createElement(NumberField, {
|
|
445
|
+
label: "Width",
|
|
446
|
+
unit: "px",
|
|
447
|
+
value: cardWidth,
|
|
448
|
+
min: 1,
|
|
449
|
+
onCommit: onWidth
|
|
450
|
+
}), /*#__PURE__*/_react.default.createElement(AutoField, {
|
|
451
|
+
label: "Height"
|
|
452
|
+
})));
|
|
453
|
+
};
|
|
454
|
+
|
|
455
|
+
/* Header + panel switch + body, shared by every element kind — only the
|
|
456
|
+
groups inside differ. */
|
|
457
|
+
var renderInspectorBody = function renderInspectorBody(icon, headerName, id, groups) {
|
|
458
|
+
return /*#__PURE__*/_react.default.createElement(StyledInspectorBody, null, /*#__PURE__*/_react.default.createElement(StyledInspectorHeader, null, /*#__PURE__*/_react.default.createElement("span", {
|
|
459
|
+
className: "inspector-type-icon"
|
|
460
|
+
}, icon), /*#__PURE__*/_react.default.createElement("span", {
|
|
461
|
+
className: "inspector-name"
|
|
462
|
+
}, /*#__PURE__*/_react.default.createElement(_EditableText.EditableText, {
|
|
463
|
+
value: headerName,
|
|
464
|
+
variant: "Header 3",
|
|
465
|
+
weight: "bold",
|
|
466
|
+
onSave: function onSave(event) {
|
|
467
|
+
return setNames(function (current) {
|
|
468
|
+
return _objectSpread(_objectSpread({}, current), {}, {
|
|
469
|
+
[id]: event.target.value
|
|
470
|
+
});
|
|
471
|
+
});
|
|
472
|
+
},
|
|
473
|
+
inputProps: {
|
|
474
|
+
maxLength: 120
|
|
475
|
+
}
|
|
476
|
+
}))), /*#__PURE__*/_react.default.createElement(_outline.StyledChooseRow, null, /*#__PURE__*/_react.default.createElement(_outline.StyledPanelChooseSlot, null, /*#__PURE__*/_react.default.createElement(_ChooseV.ChooseV2, {
|
|
477
|
+
required: true,
|
|
478
|
+
options: [{
|
|
479
|
+
id: "properties",
|
|
480
|
+
name: "Properties"
|
|
481
|
+
}, {
|
|
482
|
+
id: "comments",
|
|
483
|
+
name: "Comments"
|
|
484
|
+
}],
|
|
485
|
+
selected: [tab],
|
|
486
|
+
onChange: function onChange(selected) {
|
|
487
|
+
return setTab(selected[0]);
|
|
488
|
+
}
|
|
489
|
+
}))), tab === "comments" ? /*#__PURE__*/_react.default.createElement(StyledInspectorEmpty, null, /*#__PURE__*/_react.default.createElement(_Typography.Body2, null, "The comments stream is coming soon.")) : /*#__PURE__*/_react.default.createElement(StyledPropGroups, null, groups));
|
|
490
|
+
};
|
|
491
|
+
|
|
492
|
+
/* Nothing selected. */
|
|
493
|
+
if (!def && !linkDef && !fileDef) {
|
|
494
|
+
return shell(/*#__PURE__*/_react.default.createElement(StyledInspectorEmpty, null, /*#__PURE__*/_react.default.createElement(_Typography.Body2, null, "Select an element to see its properties.")));
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
/* Link card — its URL plus the shared Locked flag. */
|
|
498
|
+
if (linkDef) {
|
|
499
|
+
var _names$linkDef$id, _linkDef$url;
|
|
500
|
+
return shell(renderInspectorBody(/*#__PURE__*/_react.default.createElement(_Icons.InsertLinkIcon, null), (_names$linkDef$id = names[linkDef.id]) !== null && _names$linkDef$id !== void 0 ? _names$linkDef$id : linkDef.url || "Link", linkDef.id, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(StyledPropGroup, null, renderBody(linkDef.id), /*#__PURE__*/_react.default.createElement(StyledPropRow, null, /*#__PURE__*/_react.default.createElement(_Label.Label, {
|
|
501
|
+
size: "small",
|
|
502
|
+
weight: "regular"
|
|
503
|
+
}, "URL"), /*#__PURE__*/_react.default.createElement(StyledControl, null, /*#__PURE__*/_react.default.createElement(_Input.Input, {
|
|
504
|
+
value: (_linkDef$url = linkDef.url) !== null && _linkDef$url !== void 0 ? _linkDef$url : "",
|
|
505
|
+
placeholder: "https://\u2026",
|
|
506
|
+
onChange: function onChange(event) {
|
|
507
|
+
return setLinks(function (current) {
|
|
508
|
+
return current.map(function (link) {
|
|
509
|
+
return link.id === linkDef.id ? _objectSpread(_objectSpread({}, link), {}, {
|
|
510
|
+
url: event.target.value
|
|
511
|
+
}) : link;
|
|
512
|
+
});
|
|
513
|
+
});
|
|
514
|
+
}
|
|
515
|
+
}))), renderLocked(linkDef.id)), renderCardGeometry(linkDef.id, linkDef.width, function (width) {
|
|
516
|
+
return setLinks(function (current) {
|
|
517
|
+
return current.map(function (link) {
|
|
518
|
+
return link.id === linkDef.id ? _objectSpread(_objectSpread({}, link), {}, {
|
|
519
|
+
width
|
|
520
|
+
}) : link;
|
|
521
|
+
});
|
|
522
|
+
});
|
|
523
|
+
}))));
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
/* File card — read-only size plus the shared Locked flag. */
|
|
527
|
+
if (fileDef) {
|
|
528
|
+
var _names$fileDef$id;
|
|
529
|
+
return shell(renderInspectorBody(/*#__PURE__*/_react.default.createElement(_Icons.AttachmentIcon, null), (_names$fileDef$id = names[fileDef.id]) !== null && _names$fileDef$id !== void 0 ? _names$fileDef$id : fileDef.file ? "".concat(fileDef.file.base, ".").concat(fileDef.file.extension) : "File", fileDef.id, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(StyledPropGroup, null, renderBody(fileDef.id), /*#__PURE__*/_react.default.createElement(StyledPropRow, null, /*#__PURE__*/_react.default.createElement(_Label.Label, {
|
|
530
|
+
size: "small",
|
|
531
|
+
weight: "regular"
|
|
532
|
+
}, "Size"), /*#__PURE__*/_react.default.createElement(StyledAutoField, null, fileDef.file ? (0, _fileElement.formatFileSize)(fileDef.file.size) : "—")), renderLocked(fileDef.id)), renderCardGeometry(fileDef.id, fileDef.width, function (width) {
|
|
533
|
+
return setFiles(function (current) {
|
|
534
|
+
return current.map(function (file) {
|
|
535
|
+
return file.id === fileDef.id ? _objectSpread(_objectSpread({}, file), {}, {
|
|
536
|
+
width
|
|
537
|
+
}) : file;
|
|
538
|
+
});
|
|
539
|
+
});
|
|
540
|
+
}))));
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
/* Shape / sticky from here on. */
|
|
544
|
+
if (!def) {
|
|
545
|
+
return shell(/*#__PURE__*/_react.default.createElement(StyledInspectorEmpty, null, /*#__PURE__*/_react.default.createElement(_Typography.Body2, null, "Select an element to see its properties.")));
|
|
546
|
+
}
|
|
547
|
+
var traits = elementTraits(def);
|
|
548
|
+
var shape = def.kind === "shape" ? shapes[def.id] : null;
|
|
549
|
+
var size = (_sizes$def$id = sizes[def.id]) !== null && _sizes$def$id !== void 0 ? _sizes$def$id : {
|
|
550
|
+
width: def.width,
|
|
551
|
+
height: def.height
|
|
552
|
+
};
|
|
553
|
+
var position = (_positions$def$id = positions[def.id]) !== null && _positions$def$id !== void 0 ? _positions$def$id : {
|
|
554
|
+
x: def.x,
|
|
555
|
+
y: def.y
|
|
556
|
+
};
|
|
557
|
+
var rotation = (_rotations$def$id = rotations[def.id]) !== null && _rotations$def$id !== void 0 ? _rotations$def$id : 0;
|
|
558
|
+
var typeLabel = shape ? TYPE_LABEL[shape.type] : "Sticky note";
|
|
559
|
+
var name = (_names$def$id = names[def.id]) !== null && _names$def$id !== void 0 ? _names$def$id : typeLabel;
|
|
560
|
+
var updateShape = function updateShape(partial) {
|
|
561
|
+
return setShapes(function (current) {
|
|
562
|
+
return _objectSpread(_objectSpread({}, current), {}, {
|
|
563
|
+
[def.id]: _objectSpread(_objectSpread({}, current[def.id]), partial)
|
|
564
|
+
});
|
|
565
|
+
});
|
|
566
|
+
};
|
|
567
|
+
|
|
568
|
+
/* Fill is unified across kinds: a shape writes shape.fill, a sticky its note
|
|
569
|
+
colour. A transparent colour means no fill. */
|
|
570
|
+
var currentFill = shape ? shape.fill : stickyStyle.color;
|
|
571
|
+
var currentFillOpacity = shape ? shape.fillOpacity : stickyStyle.fillOpacity;
|
|
572
|
+
var setFill = function setFill(color) {
|
|
573
|
+
if (shape) {
|
|
574
|
+
updateShape({
|
|
575
|
+
fill: color
|
|
576
|
+
});
|
|
577
|
+
} else {
|
|
578
|
+
setStickyStyle(_objectSpread(_objectSpread({}, stickyStyle), {}, {
|
|
579
|
+
color
|
|
580
|
+
}));
|
|
581
|
+
}
|
|
582
|
+
};
|
|
583
|
+
var setFillOpacity = function setFillOpacity(next) {
|
|
584
|
+
if (shape) {
|
|
585
|
+
updateShape({
|
|
586
|
+
fillOpacity: next
|
|
587
|
+
});
|
|
588
|
+
} else {
|
|
589
|
+
setStickyStyle(_objectSpread(_objectSpread({}, stickyStyle), {}, {
|
|
590
|
+
fillOpacity: next
|
|
591
|
+
}));
|
|
592
|
+
}
|
|
593
|
+
};
|
|
594
|
+
var currentFontSize = shape ? shape.fontSize : stickyStyle.fontSize;
|
|
595
|
+
var currentAlign = shape ? (_shape$align = shape.align) !== null && _shape$align !== void 0 ? _shape$align : "left" : stickyStyle.align;
|
|
596
|
+
var setFontSize = function setFontSize(next) {
|
|
597
|
+
if (shape) {
|
|
598
|
+
updateShape({
|
|
599
|
+
fontSize: next
|
|
600
|
+
});
|
|
601
|
+
} else {
|
|
602
|
+
setStickyStyle(_objectSpread(_objectSpread({}, stickyStyle), {}, {
|
|
603
|
+
fontSize: next
|
|
604
|
+
}));
|
|
605
|
+
}
|
|
606
|
+
};
|
|
607
|
+
var setAlign = function setAlign(next) {
|
|
608
|
+
if (shape) {
|
|
609
|
+
updateShape({
|
|
610
|
+
align: next
|
|
611
|
+
});
|
|
612
|
+
} else {
|
|
613
|
+
setStickyStyle(_objectSpread(_objectSpread({}, stickyStyle), {}, {
|
|
614
|
+
align: next
|
|
615
|
+
}));
|
|
616
|
+
}
|
|
617
|
+
};
|
|
618
|
+
var styleFlags = shape !== null && shape !== void 0 ? shape : stickyStyle;
|
|
619
|
+
var toggleStyle = function toggleStyle(key) {
|
|
620
|
+
if (shape) {
|
|
621
|
+
updateShape({
|
|
622
|
+
[key]: !shape[key]
|
|
623
|
+
});
|
|
624
|
+
} else {
|
|
625
|
+
setStickyStyle(_objectSpread(_objectSpread({}, stickyStyle), {}, {
|
|
626
|
+
[key]: !stickyStyle[key]
|
|
627
|
+
}));
|
|
628
|
+
}
|
|
629
|
+
};
|
|
630
|
+
return shell(renderInspectorBody(shape ? _elements.SHAPE_TYPE_ICON[shape.type] : /*#__PURE__*/_react.default.createElement(_Icons.NoteIcon, null), name, def.id, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(StyledPropGroup, null, renderBody(def.id), shape ? /*#__PURE__*/_react.default.createElement(StyledPropRow, null, /*#__PURE__*/_react.default.createElement(_Label.Label, {
|
|
631
|
+
size: "small",
|
|
632
|
+
weight: "regular"
|
|
633
|
+
}, "Shape"), /*#__PURE__*/_react.default.createElement(OptionSelect, {
|
|
634
|
+
options: ["rectangle", "roundedRectangle", "circle", "triangle"].map(function (shapeType) {
|
|
635
|
+
return {
|
|
636
|
+
id: shapeType,
|
|
637
|
+
name: TYPE_LABEL[shapeType]
|
|
638
|
+
};
|
|
639
|
+
}),
|
|
640
|
+
value: shape.type,
|
|
641
|
+
triggerLabel: TYPE_LABEL[shape.type],
|
|
642
|
+
onChange: function onChange(next) {
|
|
643
|
+
return updateShape({
|
|
644
|
+
type: next
|
|
645
|
+
});
|
|
646
|
+
}
|
|
647
|
+
})) : null, renderLocked(def.id)), traits.geometry ? /*#__PURE__*/_react.default.createElement(StyledPropGroup, null, /*#__PURE__*/_react.default.createElement(_Typography.Body2, {
|
|
648
|
+
weight: "bold",
|
|
649
|
+
className: "group-title"
|
|
650
|
+
}, "Geometry"), /*#__PURE__*/_react.default.createElement(StyledFieldGrid, null, /*#__PURE__*/_react.default.createElement(NumberField, {
|
|
651
|
+
label: "X",
|
|
652
|
+
unit: "px",
|
|
653
|
+
value: position.x,
|
|
654
|
+
onCommit: function onCommit(next) {
|
|
655
|
+
return setPositions(function (current) {
|
|
656
|
+
return _objectSpread(_objectSpread({}, current), {}, {
|
|
657
|
+
[def.id]: _objectSpread(_objectSpread({}, current[def.id]), {}, {
|
|
658
|
+
x: next
|
|
659
|
+
})
|
|
660
|
+
});
|
|
661
|
+
});
|
|
662
|
+
}
|
|
663
|
+
}), /*#__PURE__*/_react.default.createElement(NumberField, {
|
|
664
|
+
label: "Y",
|
|
665
|
+
unit: "px",
|
|
666
|
+
value: position.y,
|
|
667
|
+
onCommit: function onCommit(next) {
|
|
668
|
+
return setPositions(function (current) {
|
|
669
|
+
return _objectSpread(_objectSpread({}, current), {}, {
|
|
670
|
+
[def.id]: _objectSpread(_objectSpread({}, current[def.id]), {}, {
|
|
671
|
+
y: next
|
|
672
|
+
})
|
|
673
|
+
});
|
|
674
|
+
});
|
|
675
|
+
}
|
|
676
|
+
})), /*#__PURE__*/_react.default.createElement(StyledFieldGrid, null, traits.autoWidth ? /*#__PURE__*/_react.default.createElement(AutoField, {
|
|
677
|
+
label: "Width"
|
|
678
|
+
}) : /*#__PURE__*/_react.default.createElement(NumberField, {
|
|
679
|
+
label: "Width",
|
|
680
|
+
unit: "px",
|
|
681
|
+
value: size.width,
|
|
682
|
+
min: 1,
|
|
683
|
+
onCommit: function onCommit(next) {
|
|
684
|
+
return setSizes(function (current) {
|
|
685
|
+
var _current$def$id$heigh, _current$def$id;
|
|
686
|
+
return _objectSpread(_objectSpread({}, current), {}, {
|
|
687
|
+
[def.id]: {
|
|
688
|
+
width: next,
|
|
689
|
+
height: (_current$def$id$heigh = (_current$def$id = current[def.id]) === null || _current$def$id === void 0 ? void 0 : _current$def$id.height) !== null && _current$def$id$heigh !== void 0 ? _current$def$id$heigh : def.height
|
|
690
|
+
}
|
|
691
|
+
});
|
|
692
|
+
});
|
|
693
|
+
}
|
|
694
|
+
}), traits.autoHeight ? /*#__PURE__*/_react.default.createElement(AutoField, {
|
|
695
|
+
label: "Height"
|
|
696
|
+
}) : /*#__PURE__*/_react.default.createElement(NumberField, {
|
|
697
|
+
label: "Height",
|
|
698
|
+
unit: "px",
|
|
699
|
+
value: size.height,
|
|
700
|
+
min: 1,
|
|
701
|
+
onCommit: function onCommit(next) {
|
|
702
|
+
return setSizes(function (current) {
|
|
703
|
+
var _current$def$id$width, _current$def$id2;
|
|
704
|
+
return _objectSpread(_objectSpread({}, current), {}, {
|
|
705
|
+
[def.id]: {
|
|
706
|
+
width: (_current$def$id$width = (_current$def$id2 = current[def.id]) === null || _current$def$id2 === void 0 ? void 0 : _current$def$id2.width) !== null && _current$def$id$width !== void 0 ? _current$def$id$width : def.width,
|
|
707
|
+
height: next
|
|
708
|
+
}
|
|
709
|
+
});
|
|
710
|
+
});
|
|
711
|
+
}
|
|
712
|
+
})), /*#__PURE__*/_react.default.createElement(StyledFieldGrid, null, /*#__PURE__*/_react.default.createElement(NumberField, {
|
|
713
|
+
label: "Rotation",
|
|
714
|
+
unit: "\xB0",
|
|
715
|
+
value: rotation,
|
|
716
|
+
onCommit: function onCommit(next) {
|
|
717
|
+
return setRotations(function (current) {
|
|
718
|
+
return _objectSpread(_objectSpread({}, current), {}, {
|
|
719
|
+
[def.id]: next
|
|
720
|
+
});
|
|
721
|
+
});
|
|
722
|
+
}
|
|
723
|
+
}))) : null, traits.fill ? /*#__PURE__*/_react.default.createElement(StyledPropGroup, null, /*#__PURE__*/_react.default.createElement(_Typography.Body2, {
|
|
724
|
+
weight: "bold",
|
|
725
|
+
className: "group-title"
|
|
726
|
+
}, "Fill"), /*#__PURE__*/_react.default.createElement(StyledFieldGrid, null, /*#__PURE__*/_react.default.createElement(StyledPropRow, null, /*#__PURE__*/_react.default.createElement(_Label.Label, {
|
|
727
|
+
size: "small",
|
|
728
|
+
weight: "regular"
|
|
729
|
+
}, "Color"), /*#__PURE__*/_react.default.createElement(ColorPickerField, {
|
|
730
|
+
includeTransparent: traits.fillTransparent,
|
|
731
|
+
value: currentFill,
|
|
732
|
+
onSelect: setFill
|
|
733
|
+
})), /*#__PURE__*/_react.default.createElement(StyledPropRow, null, /*#__PURE__*/_react.default.createElement(_Label.Label, {
|
|
734
|
+
size: "small",
|
|
735
|
+
weight: "regular"
|
|
736
|
+
}, "Opacity"), /*#__PURE__*/_react.default.createElement(OptionSelect, {
|
|
737
|
+
options: _elements.OPACITY_OPTIONS.map(function (opacity) {
|
|
738
|
+
return {
|
|
739
|
+
id: opacity,
|
|
740
|
+
name: "".concat(opacity, "%")
|
|
741
|
+
};
|
|
742
|
+
}),
|
|
743
|
+
value: currentFillOpacity,
|
|
744
|
+
triggerLabel: "".concat(currentFillOpacity, "%"),
|
|
745
|
+
onChange: function onChange(next) {
|
|
746
|
+
return setFillOpacity(Number(next));
|
|
747
|
+
}
|
|
748
|
+
})))) : null, traits.stroke && shape ? /*#__PURE__*/_react.default.createElement(StyledPropGroup, null, /*#__PURE__*/_react.default.createElement(_Typography.Body2, {
|
|
749
|
+
weight: "bold",
|
|
750
|
+
className: "group-title"
|
|
751
|
+
}, "Stroke"), /*#__PURE__*/_react.default.createElement(StyledPropRow, null, /*#__PURE__*/_react.default.createElement(_Label.Label, {
|
|
752
|
+
size: "small",
|
|
753
|
+
weight: "regular"
|
|
754
|
+
}, "Pattern"), /*#__PURE__*/_react.default.createElement(StyledSegmented, null, /*#__PURE__*/_react.default.createElement(_ChooseV.ChooseV2, {
|
|
755
|
+
required: true,
|
|
756
|
+
options: _elements.BORDER_STYLE_OPTIONS.map(function (option) {
|
|
757
|
+
return {
|
|
758
|
+
id: option.label,
|
|
759
|
+
name: option.label
|
|
760
|
+
};
|
|
761
|
+
}),
|
|
762
|
+
selected: [(_BORDER_STYLE_OPTIONS = (_BORDER_STYLE_OPTIONS2 = _elements.BORDER_STYLE_OPTIONS.find(function (option) {
|
|
763
|
+
return option.value === shape.strokeDash;
|
|
764
|
+
})) === null || _BORDER_STYLE_OPTIONS2 === void 0 ? void 0 : _BORDER_STYLE_OPTIONS2.label) !== null && _BORDER_STYLE_OPTIONS !== void 0 ? _BORDER_STYLE_OPTIONS : "Solid"],
|
|
765
|
+
onChange: function onChange(selected) {
|
|
766
|
+
var _BORDER_STYLE_OPTIONS3;
|
|
767
|
+
return updateShape({
|
|
768
|
+
strokeDash: (_BORDER_STYLE_OPTIONS3 = _elements.BORDER_STYLE_OPTIONS.find(function (option) {
|
|
769
|
+
return option.label === selected[0];
|
|
770
|
+
})) === null || _BORDER_STYLE_OPTIONS3 === void 0 ? void 0 : _BORDER_STYLE_OPTIONS3.value
|
|
771
|
+
});
|
|
772
|
+
}
|
|
773
|
+
}))), /*#__PURE__*/_react.default.createElement(StyledFieldGrid, null, /*#__PURE__*/_react.default.createElement(StyledPropRow, null, /*#__PURE__*/_react.default.createElement(_Label.Label, {
|
|
774
|
+
size: "small",
|
|
775
|
+
weight: "regular"
|
|
776
|
+
}, "Thickness"), /*#__PURE__*/_react.default.createElement(OptionSelect, {
|
|
777
|
+
options: _elements.THICKNESS_OPTIONS.map(function (thickness) {
|
|
778
|
+
return {
|
|
779
|
+
id: thickness,
|
|
780
|
+
name: "".concat(thickness, " pt")
|
|
781
|
+
};
|
|
782
|
+
}),
|
|
783
|
+
value: shape.strokeWidth,
|
|
784
|
+
triggerLabel: "".concat(shape.strokeWidth, " pt"),
|
|
785
|
+
onChange: function onChange(next) {
|
|
786
|
+
return updateShape({
|
|
787
|
+
strokeWidth: Number(next)
|
|
788
|
+
});
|
|
789
|
+
}
|
|
790
|
+
})), /*#__PURE__*/_react.default.createElement(StyledPropRow, null, /*#__PURE__*/_react.default.createElement(_Label.Label, {
|
|
791
|
+
size: "small",
|
|
792
|
+
weight: "regular"
|
|
793
|
+
}, "Color"), /*#__PURE__*/_react.default.createElement(ColorPickerField, {
|
|
794
|
+
value: shape.stroke,
|
|
795
|
+
onSelect: function onSelect(color) {
|
|
796
|
+
return updateShape({
|
|
797
|
+
stroke: color
|
|
798
|
+
});
|
|
799
|
+
}
|
|
800
|
+
}))), /*#__PURE__*/_react.default.createElement(StyledFieldGrid, null, /*#__PURE__*/_react.default.createElement(StyledPropRow, null, /*#__PURE__*/_react.default.createElement(_Label.Label, {
|
|
801
|
+
size: "small",
|
|
802
|
+
weight: "regular"
|
|
803
|
+
}, "Radius"), /*#__PURE__*/_react.default.createElement(OptionSelect, {
|
|
804
|
+
options: _elements.RADIUS_OPTIONS.map(function (radius) {
|
|
805
|
+
return {
|
|
806
|
+
id: radius,
|
|
807
|
+
name: "".concat(radius, " px")
|
|
808
|
+
};
|
|
809
|
+
}),
|
|
810
|
+
value: shape.borderRadius,
|
|
811
|
+
triggerLabel: "".concat(shape.borderRadius, " px"),
|
|
812
|
+
onChange: function onChange(next) {
|
|
813
|
+
return updateShape({
|
|
814
|
+
borderRadius: Number(next)
|
|
815
|
+
});
|
|
816
|
+
}
|
|
817
|
+
})), /*#__PURE__*/_react.default.createElement(StyledPropRow, null, /*#__PURE__*/_react.default.createElement(_Label.Label, {
|
|
818
|
+
size: "small",
|
|
819
|
+
weight: "regular"
|
|
820
|
+
}, "Opacity"), /*#__PURE__*/_react.default.createElement(OptionSelect, {
|
|
821
|
+
options: _elements.OPACITY_OPTIONS.map(function (opacity) {
|
|
822
|
+
return {
|
|
823
|
+
id: opacity,
|
|
824
|
+
name: "".concat(opacity, "%")
|
|
825
|
+
};
|
|
826
|
+
}),
|
|
827
|
+
value: shape.strokeOpacity,
|
|
828
|
+
triggerLabel: "".concat(shape.strokeOpacity, "%"),
|
|
829
|
+
onChange: function onChange(next) {
|
|
830
|
+
return updateShape({
|
|
831
|
+
strokeOpacity: Number(next)
|
|
832
|
+
});
|
|
833
|
+
}
|
|
834
|
+
})))) : null, traits.text ? /*#__PURE__*/_react.default.createElement(StyledPropGroup, null, /*#__PURE__*/_react.default.createElement(_Typography.Body2, {
|
|
835
|
+
weight: "bold",
|
|
836
|
+
className: "group-title"
|
|
837
|
+
}, "Text"), /*#__PURE__*/_react.default.createElement(StyledFieldGrid, null, /*#__PURE__*/_react.default.createElement(StyledPropRow, null, /*#__PURE__*/_react.default.createElement(_Label.Label, {
|
|
838
|
+
size: "small",
|
|
839
|
+
weight: "regular"
|
|
840
|
+
}, "Style"), /*#__PURE__*/_react.default.createElement(StyledSegmented, null, _elements.STYLE_OPTIONS.map(function (option) {
|
|
841
|
+
return /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
|
|
842
|
+
key: option.key,
|
|
843
|
+
title: option.label
|
|
844
|
+
}, /*#__PURE__*/_react.default.createElement(_IconButton.IconButton, {
|
|
845
|
+
variant: "text gray",
|
|
846
|
+
active: styleFlags[option.key],
|
|
847
|
+
"aria-label": option.label,
|
|
848
|
+
onClick: function onClick() {
|
|
849
|
+
return toggleStyle(option.key);
|
|
850
|
+
}
|
|
851
|
+
}, option.icon));
|
|
852
|
+
}))), /*#__PURE__*/_react.default.createElement(StyledPropRow, null, /*#__PURE__*/_react.default.createElement(_Label.Label, {
|
|
853
|
+
size: "small",
|
|
854
|
+
weight: "regular"
|
|
855
|
+
}, "Size"), /*#__PURE__*/_react.default.createElement(OptionSelect, {
|
|
856
|
+
options: _elements.FONT_SIZE_OPTIONS.map(function (fontSize) {
|
|
857
|
+
return {
|
|
858
|
+
id: fontSize,
|
|
859
|
+
name: "".concat(fontSize, " pt")
|
|
860
|
+
};
|
|
861
|
+
}),
|
|
862
|
+
value: currentFontSize,
|
|
863
|
+
triggerLabel: "".concat(currentFontSize, " pt"),
|
|
864
|
+
onChange: function onChange(next) {
|
|
865
|
+
return setFontSize(Number(next));
|
|
866
|
+
}
|
|
867
|
+
}))), /*#__PURE__*/_react.default.createElement(StyledPropRow, null, /*#__PURE__*/_react.default.createElement(_Label.Label, {
|
|
868
|
+
size: "small",
|
|
869
|
+
weight: "regular"
|
|
870
|
+
}, "Alignment"), /*#__PURE__*/_react.default.createElement(StyledSegmented, null, _elements.ALIGN_OPTIONS.map(function (option) {
|
|
871
|
+
return /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
|
|
872
|
+
key: option.value,
|
|
873
|
+
title: option.label
|
|
874
|
+
}, /*#__PURE__*/_react.default.createElement(_IconButton.IconButton, {
|
|
875
|
+
variant: "text gray",
|
|
876
|
+
active: currentAlign === option.value,
|
|
877
|
+
"aria-label": option.label,
|
|
878
|
+
onClick: function onClick() {
|
|
879
|
+
return setAlign(option.value);
|
|
880
|
+
}
|
|
881
|
+
}, option.icon));
|
|
882
|
+
})))) : null)));
|
|
883
|
+
};
|
|
884
|
+
//# sourceMappingURL=inspector.js.map
|