@grafloria/element 0.3.3 → 0.3.5
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 +1 -1
- package/package.json +1 -1
- package/src/index.d.ts +4 -0
- package/src/index.js +74 -54
- package/src/index.js.map +1 -1
- package/src/lib/stencil-kit/index.d.ts +5 -0
- package/src/lib/stencil-kit/index.js +10 -0
- package/src/lib/stencil-kit/index.js.map +1 -0
- package/src/lib/stencil-kit/palette.d.ts +72 -0
- package/src/lib/stencil-kit/palette.js +275 -0
- package/src/lib/stencil-kit/palette.js.map +1 -0
- package/src/lib/stencil-kit/shape-data.d.ts +27 -0
- package/src/lib/stencil-kit/shape-data.js +153 -0
- package/src/lib/stencil-kit/shape-data.js.map +1 -0
- package/src/lib/stencil-kit/styles.d.ts +2 -0
- package/src/lib/stencil-kit/styles.js +100 -0
- package/src/lib/stencil-kit/styles.js.map +1 -0
package/README.md
CHANGED
|
@@ -25,6 +25,6 @@ properties (`el.nodes = [...]`) — the standard custom-element contract every
|
|
|
25
25
|
framework's template binding targets.
|
|
26
26
|
|
|
27
27
|
For first-class framework idioms use `@grafloria/react`,
|
|
28
|
-
`@grafloria/
|
|
28
|
+
`@grafloria/angular`, or `@grafloria/vue`.
|
|
29
29
|
|
|
30
30
|
MIT © [Grafloria](https://github.com/grafloria/grafloria)
|
package/package.json
CHANGED
package/src/index.d.ts
CHANGED
|
@@ -33,6 +33,8 @@ export { shadcnBridge, muiBridge, tailwindBridge, BRIDGEABLE_TOKENS, generateTok
|
|
|
33
33
|
export type { TokenBridge } from '@grafloria/renderer';
|
|
34
34
|
export { portTypeRegistry, arePortDataTypesCompatible, portTypeColor } from '@grafloria/engine';
|
|
35
35
|
export type { PortDataTypeDefinition } from '@grafloria/engine';
|
|
36
|
+
export { listStencils, builtInStencils, getStencil, registerStencils, registerGeneratedTemplates, generatedTemplates, TemplateRegistry, NodeFactory, registerTemplateLibrary, } from '@grafloria/engine';
|
|
37
|
+
export type { Stencil, NodeTemplate } from '@grafloria/engine';
|
|
36
38
|
export { defineStyle, defineStyles, getStyle, hasStyle, removeStyle, clearStyles, listStyles, resolveStyleClasses, resolveNodeStyle, resolveLinkStyle, CASCADE_ORDER, } from '@grafloria/renderer';
|
|
37
39
|
export type { NamedStyle, CascadeLayer } from '@grafloria/renderer';
|
|
38
40
|
export { GRAFLORIA_INSTANCE_ATTR, GRAFLORIA_VAR_PREFIX, THEME_VARS, THEME_TOKENS, cssVarName, themeVar, themeVarValue, resolveThemeVars, instanceScopeSelector, } from '@grafloria/renderer';
|
|
@@ -78,6 +80,8 @@ export { erTable, umlClass, erTables, umlClasses, CardHandle, ErTable, ErField,
|
|
|
78
80
|
export type { HandleApi } from './lib/diagram-kit';
|
|
79
81
|
export { bindDashboardGrid, rowHeightFor, boardHeightFor, columnUnitFor, cellToRect, pointToCell, sizeToSpan, gridItemFromCell, cellFromGridItem, buildCommitCommands, ensureDashboardKitStyles, DASHBOARD_KIT_STYLE_ID, dashboard, defaultWidgetRenderer, renderKpiWidget, renderLineWidget, renderBarWidget, renderDonutWidget, renderFunnelWidget, renderTableWidget, BUILT_IN_WIDGET_KINDS, } from './lib/dashboard-kit';
|
|
80
82
|
export type { DashboardGridApi, DashboardGridOptions, DashboardGridHandle, CellRect, WorldRect, DashboardGridGeometry, TileDelta, DashboardOptions, DashboardSpec, DashboardSnapshot, DashboardHandle, DashboardViewSpec, DashboardWidgetSpec, WidgetHandle, WidgetRenderer, KpiWidgetData, LineWidgetData, LineSeries, BarWidgetData, DonutWidgetData, FunnelWidgetData, TableWidgetData, } from './lib/dashboard-kit';
|
|
83
|
+
export { bindStencilPalette, bindShapeDataPanel, ensureStencilKitStyles } from './lib/stencil-kit';
|
|
84
|
+
export type { StencilPaletteApi, StencilPaletteOptions, StencilPaletteHandle, ShapeDataPanelApi, ShapeDataPanelOptions, ShapeDataPanelHandle, } from './lib/stencil-kit';
|
|
81
85
|
export * from '@grafloria/engine';
|
|
82
86
|
export * from '@grafloria/renderer';
|
|
83
87
|
export { NodeModel, PortModel, distanceToSegment, rotatePoint, coalesce, } from '@grafloria/engine';
|
package/src/index.js
CHANGED
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
*/
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.tailwindBridge = exports.muiBridge = exports.shadcnBridge = exports.deriveTheme = exports.assertThemeContrast = exports.auditThemeContrast = exports.ensureContrast = exports.withLightness = exports.lightnessOf = exports.hslToRgb = exports.rgbToHsl = exports.meetsContrast = exports.contrastRatio = exports.relativeLuminance = exports.toHex = exports.parseColor = exports.WCAG = exports.resolveBindableVars = exports.themeRefCssValue = exports.resolveThemeRef = exports.themeRefVar = exports.themeRefToken = exports.isThemeRef = exports.themeRef = exports.MEDIA_FORCED_COLORS = exports.MEDIA_PREFERS_CONTRAST = exports.MEDIA_PREFERS_DARK = exports.readColorPreferences = exports.resolveThemeFromPrefs = exports.ColorModeController = exports.DEFAULT_THEME_SET = exports.HIGH_CONTRAST_DARK_THEME = exports.HIGH_CONTRAST_LIGHT_THEME = exports.createDiagramApi = exports.DARK_THEME = exports.LIGHT_THEME = exports.renderToStaticSVG = exports.renderFromTemplate = exports.hasNodeType = exports.getNodeType = exports.registeredNodeTypes = exports.unregisterNodeType = exports.registerNodeType = exports.fromDocument = exports.renderStatic = exports.render = exports.Grafloria = exports.GRAFLORIA_EVENTS = exports.defineGrafloriaFlow = exports.GrafloriaFlowElement = void 0;
|
|
18
|
-
exports.
|
|
19
|
-
exports.
|
|
20
|
-
exports.
|
|
21
|
-
exports.
|
|
22
|
-
exports.coalesceRects = exports.rotatePointSelection = exports.distanceToSegmentCanvas = exports.coalesce = exports.rotatePoint = exports.distanceToSegment = exports.PortModel = exports.NodeModel = exports.BUILT_IN_WIDGET_KINDS = exports.renderTableWidget = exports.renderFunnelWidget = exports.renderDonutWidget = exports.renderBarWidget = exports.renderLineWidget = exports.renderKpiWidget = exports.defaultWidgetRenderer = exports.dashboard = exports.DASHBOARD_KIT_STYLE_ID = void 0;
|
|
18
|
+
exports.embedModelInSvg = exports.GRAFLORIA_MODEL_KEY = exports.GRAFLORIA_NS = exports.mimeTypeForFormat = exports.svgToDataUri = exports.canRasterizeInThisEnvironment = exports.resolveRasterBackend = exports.createDomRasterBackend = exports.exportBatch = exports.buildPrintDocument = exports.paginate = exports.exportPdf = exports.vnodeBounds = exports.serializeVNode = exports.exportSvg = exports.instanceScopeSelector = exports.resolveThemeVars = exports.themeVarValue = exports.themeVar = exports.cssVarName = exports.THEME_TOKENS = exports.THEME_VARS = exports.GRAFLORIA_VAR_PREFIX = exports.GRAFLORIA_INSTANCE_ATTR = exports.CASCADE_ORDER = exports.resolveLinkStyle = exports.resolveNodeStyle = exports.resolveStyleClasses = exports.listStyles = exports.clearStyles = exports.removeStyle = exports.hasStyle = exports.getStyle = exports.defineStyles = exports.defineStyle = exports.registerTemplateLibrary = exports.NodeFactory = exports.TemplateRegistry = exports.generatedTemplates = exports.registerGeneratedTemplates = exports.registerStencils = exports.getStencil = exports.builtInStencils = exports.listStencils = exports.portTypeColor = exports.arePortDataTypesCompatible = exports.portTypeRegistry = exports.generateInstanceOverrideCSS = exports.generateTokenBridgeBlock = exports.BRIDGEABLE_TOKENS = void 0;
|
|
19
|
+
exports.exportDiagramText = exports.CommentStore = exports.opId = exports.compareOps = exports.replay = exports.applyOp = exports.LamportClock = exports.ReferentialIntegrity = exports.UndoStack = exports.OpLog = exports.LwwRegistry = exports.Replica = exports.CausalBuffer = exports.OpBatcher = exports.VersionVector = exports.Awareness = exports.UnreliableHub = exports.WebSocketTransport = exports.BroadcastChannelTransport = exports.MemoryTransport = exports.MemoryHub = exports.SyncAdapter = exports.createSyncSession = exports.loadReadonlySnapshot = exports.isDocumentLocked = exports.lockDocument = exports.followPresenter = exports.presentTo = exports.InMemoryViewportChannel = exports.CommentOverlayController = exports.contrastingTextColor = exports.actorInitials = exports.actorColor = exports.PRESENCE_LAYER_CLASS = exports.PresenceOverlay = exports.bindPresence = exports.QualityGovernor = exports.EMPTY_SNAPSHOT = exports.formatSnapshot = exports.PerfHud = exports.createBackground = exports.createControls = exports.createMiniMap = exports.attachCanvasPlugins = exports.importDiagram = exports.isEditableArtifact = exports.extractModel = exports.extractModelFromPng = exports.embedModelInPng = exports.extractModelFromSvg = void 0;
|
|
20
|
+
exports.onShapeRegistryChange = exports.getShapeRegistryVersion = exports.getShapeDefinition = exports.listShapes = exports.hasShape = exports.getShape = exports.unregisterShape = exports.registerPathShape = exports.registerShape = exports.createCounterScaledPortal = exports.createViewportPortal = exports.createPortal = exports.INK_OVERLAY_CLASS = exports.InkOverlay = exports.StrokeEditTool = exports.EraserTool = exports.RectangleTool = exports.DrawTool = exports.createStrokeEditTool = exports.createEraserTool = exports.createRectangleTool = exports.createDrawTool = exports.listTools = exports.registerTool = exports.clearConnectionValidators = exports.isValidConnection = exports.registerConnectionValidator = exports.listConnectors = exports.registerConnector = exports.listConnectionPoints = exports.registerConnectionPoint = exports.listAnchors = exports.registerAnchor = exports.htmlLabelVNode = exports.listMarkers = exports.unregisterMarker = exports.registerMarker = exports.listLabelTemplates = exports.unregisterLabelTemplate = exports.registerLabelTemplate = exports.listLinkTemplates = exports.unregisterLinkTemplate = exports.registerLinkTemplate = exports.DEFAULT_STROKE_STYLE = exports.StrokeModel = exports.DiagramSerializer = exports.GRAFLORIA_HASH_PREFIX = exports.GRAFLORIA_DOC_PREFIX = exports.stripGrafloriaSidecar = exports.importDiagramText = void 0;
|
|
21
|
+
exports.rowHeightFor = exports.bindDashboardGrid = exports.UmlMemberList = exports.UmlClass = exports.ErColumnList = exports.ErField = exports.ErTable = exports.CardHandle = exports.umlClasses = exports.erTables = exports.umlClass = exports.erTable = exports.rowIndexFromY = exports.matchColumns = exports.bindCardEditing = exports.renameColumnAt = exports.removeColumnAt = exports.addColumnAt = exports.updateClass = exports.updateEntity = exports.DIAGRAM_KIT_STYLE_ID = exports.ensureDiagramKitStyles = exports.umlDiagram = exports.ER_HEAD_H = exports.ER_ROW_H = exports.erRowCenterY = exports.erDiagram = exports.serveLayout = exports.PROXY_LINK_GROUP_KEY = exports.PROXY_NODE_GROUP_KEY = exports.GroupCollapseService = exports.GroupModel = exports.SwimlaneService = exports.DEFAULT_SNAP_CONFIG = exports.SnapController = exports.buildHtmlForeignObject = exports.hasHtmlContent = exports.getHtmlContent = exports.resolveToolbar = exports.getNodeToolbar = exports.autoSizeDiagram = exports.autoSizeNode = exports.outerSizeForInner = exports.desiredNodeSize = exports.measureLabelContent = exports.clampValue = exports.clampSizeToConstraints = exports.resolveAspectRatio = exports.isAutoSized = exports.getNodeSizing = void 0;
|
|
22
|
+
exports.coalesceRects = exports.rotatePointSelection = exports.distanceToSegmentCanvas = exports.coalesce = exports.rotatePoint = exports.distanceToSegment = exports.PortModel = exports.NodeModel = exports.ensureStencilKitStyles = exports.bindShapeDataPanel = exports.bindStencilPalette = exports.BUILT_IN_WIDGET_KINDS = exports.renderTableWidget = exports.renderFunnelWidget = exports.renderDonutWidget = exports.renderBarWidget = exports.renderLineWidget = exports.renderKpiWidget = exports.defaultWidgetRenderer = exports.dashboard = exports.DASHBOARD_KIT_STYLE_ID = exports.ensureDashboardKitStyles = exports.buildCommitCommands = exports.cellFromGridItem = exports.gridItemFromCell = exports.sizeToSpan = exports.pointToCell = exports.cellToRect = exports.columnUnitFor = exports.boardHeightFor = void 0;
|
|
23
23
|
const tslib_1 = require("tslib");
|
|
24
24
|
const grafloria_flow_element_1 = require("./lib/grafloria-flow-element");
|
|
25
25
|
var grafloria_flow_element_2 = require("./lib/grafloria-flow-element");
|
|
@@ -125,6 +125,20 @@ var engine_1 = require("@grafloria/engine");
|
|
|
125
125
|
Object.defineProperty(exports, "portTypeRegistry", { enumerable: true, get: function () { return engine_1.portTypeRegistry; } });
|
|
126
126
|
Object.defineProperty(exports, "arePortDataTypesCompatible", { enumerable: true, get: function () { return engine_1.arePortDataTypesCompatible; } });
|
|
127
127
|
Object.defineProperty(exports, "portTypeColor", { enumerable: true, get: function () { return engine_1.portTypeColor; } });
|
|
128
|
+
// Stencils & shape masters — the Visio-style palette surface. Named here (not
|
|
129
|
+
// left to the `export *` below) because this IS the documented way to browse and
|
|
130
|
+
// register shapes: listStencils() feeds a palette, registerStencils() puts every
|
|
131
|
+
// master behind engine.templateRegistry for NodeFactory to stamp.
|
|
132
|
+
var engine_2 = require("@grafloria/engine");
|
|
133
|
+
Object.defineProperty(exports, "listStencils", { enumerable: true, get: function () { return engine_2.listStencils; } });
|
|
134
|
+
Object.defineProperty(exports, "builtInStencils", { enumerable: true, get: function () { return engine_2.builtInStencils; } });
|
|
135
|
+
Object.defineProperty(exports, "getStencil", { enumerable: true, get: function () { return engine_2.getStencil; } });
|
|
136
|
+
Object.defineProperty(exports, "registerStencils", { enumerable: true, get: function () { return engine_2.registerStencils; } });
|
|
137
|
+
Object.defineProperty(exports, "registerGeneratedTemplates", { enumerable: true, get: function () { return engine_2.registerGeneratedTemplates; } });
|
|
138
|
+
Object.defineProperty(exports, "generatedTemplates", { enumerable: true, get: function () { return engine_2.generatedTemplates; } });
|
|
139
|
+
Object.defineProperty(exports, "TemplateRegistry", { enumerable: true, get: function () { return engine_2.TemplateRegistry; } });
|
|
140
|
+
Object.defineProperty(exports, "NodeFactory", { enumerable: true, get: function () { return engine_2.NodeFactory; } });
|
|
141
|
+
Object.defineProperty(exports, "registerTemplateLibrary", { enumerable: true, get: function () { return engine_2.registerTemplateLibrary; } });
|
|
128
142
|
// Named style classes — the `named-class` layer of the cascade. The cascade read
|
|
129
143
|
// this registry on every frame; nothing could WRITE to it.
|
|
130
144
|
var renderer_7 = require("@grafloria/renderer");
|
|
@@ -212,47 +226,47 @@ Object.defineProperty(exports, "loadReadonlySnapshot", { enumerable: true, get:
|
|
|
212
226
|
// Sync, the CRDT and comments live in the ENGINE, and this package did not
|
|
213
227
|
// re-export the engine AT ALL — its only reference was a type-only import,
|
|
214
228
|
// erased at build. Zero collaboration symbols survived into the bundle.
|
|
215
|
-
var engine_2 = require("@grafloria/engine");
|
|
216
|
-
Object.defineProperty(exports, "createSyncSession", { enumerable: true, get: function () { return engine_2.createSyncSession; } });
|
|
217
|
-
Object.defineProperty(exports, "SyncAdapter", { enumerable: true, get: function () { return engine_2.SyncAdapter; } });
|
|
218
|
-
Object.defineProperty(exports, "MemoryHub", { enumerable: true, get: function () { return engine_2.MemoryHub; } });
|
|
219
|
-
Object.defineProperty(exports, "MemoryTransport", { enumerable: true, get: function () { return engine_2.MemoryTransport; } });
|
|
220
|
-
Object.defineProperty(exports, "BroadcastChannelTransport", { enumerable: true, get: function () { return engine_2.BroadcastChannelTransport; } });
|
|
221
|
-
Object.defineProperty(exports, "WebSocketTransport", { enumerable: true, get: function () { return engine_2.WebSocketTransport; } });
|
|
222
|
-
Object.defineProperty(exports, "UnreliableHub", { enumerable: true, get: function () { return engine_2.UnreliableHub; } });
|
|
223
|
-
Object.defineProperty(exports, "Awareness", { enumerable: true, get: function () { return engine_2.Awareness; } });
|
|
224
|
-
Object.defineProperty(exports, "VersionVector", { enumerable: true, get: function () { return engine_2.VersionVector; } });
|
|
225
|
-
Object.defineProperty(exports, "OpBatcher", { enumerable: true, get: function () { return engine_2.OpBatcher; } });
|
|
226
|
-
Object.defineProperty(exports, "CausalBuffer", { enumerable: true, get: function () { return engine_2.CausalBuffer; } });
|
|
227
|
-
// The per-property CRDT. Whole-entity LWW would silently throw one edit away.
|
|
228
229
|
var engine_3 = require("@grafloria/engine");
|
|
229
|
-
Object.defineProperty(exports, "
|
|
230
|
-
Object.defineProperty(exports, "
|
|
231
|
-
Object.defineProperty(exports, "
|
|
232
|
-
Object.defineProperty(exports, "
|
|
233
|
-
Object.defineProperty(exports, "
|
|
234
|
-
Object.defineProperty(exports, "
|
|
235
|
-
Object.defineProperty(exports, "
|
|
236
|
-
Object.defineProperty(exports, "
|
|
237
|
-
Object.defineProperty(exports, "
|
|
238
|
-
Object.defineProperty(exports, "
|
|
239
|
-
|
|
230
|
+
Object.defineProperty(exports, "createSyncSession", { enumerable: true, get: function () { return engine_3.createSyncSession; } });
|
|
231
|
+
Object.defineProperty(exports, "SyncAdapter", { enumerable: true, get: function () { return engine_3.SyncAdapter; } });
|
|
232
|
+
Object.defineProperty(exports, "MemoryHub", { enumerable: true, get: function () { return engine_3.MemoryHub; } });
|
|
233
|
+
Object.defineProperty(exports, "MemoryTransport", { enumerable: true, get: function () { return engine_3.MemoryTransport; } });
|
|
234
|
+
Object.defineProperty(exports, "BroadcastChannelTransport", { enumerable: true, get: function () { return engine_3.BroadcastChannelTransport; } });
|
|
235
|
+
Object.defineProperty(exports, "WebSocketTransport", { enumerable: true, get: function () { return engine_3.WebSocketTransport; } });
|
|
236
|
+
Object.defineProperty(exports, "UnreliableHub", { enumerable: true, get: function () { return engine_3.UnreliableHub; } });
|
|
237
|
+
Object.defineProperty(exports, "Awareness", { enumerable: true, get: function () { return engine_3.Awareness; } });
|
|
238
|
+
Object.defineProperty(exports, "VersionVector", { enumerable: true, get: function () { return engine_3.VersionVector; } });
|
|
239
|
+
Object.defineProperty(exports, "OpBatcher", { enumerable: true, get: function () { return engine_3.OpBatcher; } });
|
|
240
|
+
Object.defineProperty(exports, "CausalBuffer", { enumerable: true, get: function () { return engine_3.CausalBuffer; } });
|
|
241
|
+
// The per-property CRDT. Whole-entity LWW would silently throw one edit away.
|
|
240
242
|
var engine_4 = require("@grafloria/engine");
|
|
241
|
-
Object.defineProperty(exports, "
|
|
242
|
-
|
|
243
|
+
Object.defineProperty(exports, "Replica", { enumerable: true, get: function () { return engine_4.Replica; } });
|
|
244
|
+
Object.defineProperty(exports, "LwwRegistry", { enumerable: true, get: function () { return engine_4.LwwRegistry; } });
|
|
245
|
+
Object.defineProperty(exports, "OpLog", { enumerable: true, get: function () { return engine_4.OpLog; } });
|
|
246
|
+
Object.defineProperty(exports, "UndoStack", { enumerable: true, get: function () { return engine_4.UndoStack; } });
|
|
247
|
+
Object.defineProperty(exports, "ReferentialIntegrity", { enumerable: true, get: function () { return engine_4.ReferentialIntegrity; } });
|
|
248
|
+
Object.defineProperty(exports, "LamportClock", { enumerable: true, get: function () { return engine_4.LamportClock; } });
|
|
249
|
+
Object.defineProperty(exports, "applyOp", { enumerable: true, get: function () { return engine_4.applyOp; } });
|
|
250
|
+
Object.defineProperty(exports, "replay", { enumerable: true, get: function () { return engine_4.replay; } });
|
|
251
|
+
Object.defineProperty(exports, "compareOps", { enumerable: true, get: function () { return engine_4.compareOps; } });
|
|
252
|
+
Object.defineProperty(exports, "opId", { enumerable: true, get: function () { return engine_4.opId; } });
|
|
253
|
+
// Threaded comments. A deleted node ORPHANS its thread; it never destroys it.
|
|
243
254
|
var engine_5 = require("@grafloria/engine");
|
|
244
|
-
Object.defineProperty(exports, "
|
|
245
|
-
|
|
246
|
-
Object.defineProperty(exports, "stripGrafloriaSidecar", { enumerable: true, get: function () { return engine_5.stripGrafloriaSidecar; } });
|
|
247
|
-
Object.defineProperty(exports, "GRAFLORIA_DOC_PREFIX", { enumerable: true, get: function () { return engine_5.GRAFLORIA_DOC_PREFIX; } });
|
|
248
|
-
Object.defineProperty(exports, "GRAFLORIA_HASH_PREFIX", { enumerable: true, get: function () { return engine_5.GRAFLORIA_HASH_PREFIX; } });
|
|
255
|
+
Object.defineProperty(exports, "CommentStore", { enumerable: true, get: function () { return engine_5.CommentStore; } });
|
|
256
|
+
// The lossless Mermaid-compatible text format, with hand-edit detection.
|
|
249
257
|
var engine_6 = require("@grafloria/engine");
|
|
250
|
-
Object.defineProperty(exports, "
|
|
258
|
+
Object.defineProperty(exports, "exportDiagramText", { enumerable: true, get: function () { return engine_6.exportDiagramText; } });
|
|
259
|
+
Object.defineProperty(exports, "importDiagramText", { enumerable: true, get: function () { return engine_6.importDiagramText; } });
|
|
260
|
+
Object.defineProperty(exports, "stripGrafloriaSidecar", { enumerable: true, get: function () { return engine_6.stripGrafloriaSidecar; } });
|
|
261
|
+
Object.defineProperty(exports, "GRAFLORIA_DOC_PREFIX", { enumerable: true, get: function () { return engine_6.GRAFLORIA_DOC_PREFIX; } });
|
|
262
|
+
Object.defineProperty(exports, "GRAFLORIA_HASH_PREFIX", { enumerable: true, get: function () { return engine_6.GRAFLORIA_HASH_PREFIX; } });
|
|
263
|
+
var engine_7 = require("@grafloria/engine");
|
|
264
|
+
Object.defineProperty(exports, "DiagramSerializer", { enumerable: true, get: function () { return engine_7.DiagramSerializer; } });
|
|
251
265
|
// wave10/whiteboard: ink as a first-class model entity — authors seed and inspect strokes
|
|
252
266
|
// through this, the same class the draw tool commits.
|
|
253
|
-
var
|
|
254
|
-
Object.defineProperty(exports, "StrokeModel", { enumerable: true, get: function () { return
|
|
255
|
-
Object.defineProperty(exports, "DEFAULT_STROKE_STYLE", { enumerable: true, get: function () { return
|
|
267
|
+
var engine_8 = require("@grafloria/engine");
|
|
268
|
+
Object.defineProperty(exports, "StrokeModel", { enumerable: true, get: function () { return engine_8.StrokeModel; } });
|
|
269
|
+
Object.defineProperty(exports, "DEFAULT_STROKE_STYLE", { enumerable: true, get: function () { return engine_8.DEFAULT_STROKE_STYLE; } });
|
|
256
270
|
// ===========================================================================
|
|
257
271
|
// wave10/gallery BUG FIX — the AUTHORING SEAMS were not on the public embed.
|
|
258
272
|
//
|
|
@@ -385,22 +399,22 @@ Object.defineProperty(exports, "SnapController", { enumerable: true, get: functi
|
|
|
385
399
|
Object.defineProperty(exports, "DEFAULT_SNAP_CONFIG", { enumerable: true, get: function () { return renderer_17.DEFAULT_SNAP_CONFIG; } });
|
|
386
400
|
// Swimlanes / pools / lanes — a whole containment model in the ENGINE that the
|
|
387
401
|
// package re-exported none of. React Flow has no equivalent.
|
|
388
|
-
var engine_8 = require("@grafloria/engine");
|
|
389
|
-
Object.defineProperty(exports, "SwimlaneService", { enumerable: true, get: function () { return engine_8.SwimlaneService; } });
|
|
390
402
|
var engine_9 = require("@grafloria/engine");
|
|
391
|
-
Object.defineProperty(exports, "
|
|
403
|
+
Object.defineProperty(exports, "SwimlaneService", { enumerable: true, get: function () { return engine_9.SwimlaneService; } });
|
|
392
404
|
var engine_10 = require("@grafloria/engine");
|
|
393
|
-
Object.defineProperty(exports, "
|
|
394
|
-
|
|
395
|
-
Object.defineProperty(exports, "
|
|
405
|
+
Object.defineProperty(exports, "GroupModel", { enumerable: true, get: function () { return engine_10.GroupModel; } });
|
|
406
|
+
var engine_11 = require("@grafloria/engine");
|
|
407
|
+
Object.defineProperty(exports, "GroupCollapseService", { enumerable: true, get: function () { return engine_11.GroupCollapseService; } });
|
|
408
|
+
Object.defineProperty(exports, "PROXY_NODE_GROUP_KEY", { enumerable: true, get: function () { return engine_11.PROXY_NODE_GROUP_KEY; } });
|
|
409
|
+
Object.defineProperty(exports, "PROXY_LINK_GROUP_KEY", { enumerable: true, get: function () { return engine_11.PROXY_LINK_GROUP_KEY; } });
|
|
396
410
|
// serveLayout — the worker body for OFF-THREAD layout. `engine.setLayoutPort()`
|
|
397
411
|
// takes any port; an app runs the layout in a real Worker by importing this
|
|
398
412
|
// package inside the worker and calling `serveLayout(self)`. It was exported
|
|
399
413
|
// from @grafloria/engine and reachable by NOBODY through the embed, so the whole
|
|
400
414
|
// off-thread-layout capability (progress streaming + mid-run cancellation with
|
|
401
415
|
// a retained partial result) could not be wired from the public package.
|
|
402
|
-
var
|
|
403
|
-
Object.defineProperty(exports, "serveLayout", { enumerable: true, get: function () { return
|
|
416
|
+
var engine_12 = require("@grafloria/engine");
|
|
417
|
+
Object.defineProperty(exports, "serveLayout", { enumerable: true, get: function () { return engine_12.serveLayout; } });
|
|
404
418
|
// ===========================================================================
|
|
405
419
|
// DIAGRAM KIT — reusable ER / UML builders (wave16m).
|
|
406
420
|
//
|
|
@@ -484,6 +498,12 @@ Object.defineProperty(exports, "renderDonutWidget", { enumerable: true, get: fun
|
|
|
484
498
|
Object.defineProperty(exports, "renderFunnelWidget", { enumerable: true, get: function () { return dashboard_kit_1.renderFunnelWidget; } });
|
|
485
499
|
Object.defineProperty(exports, "renderTableWidget", { enumerable: true, get: function () { return dashboard_kit_1.renderTableWidget; } });
|
|
486
500
|
Object.defineProperty(exports, "BUILT_IN_WIDGET_KINDS", { enumerable: true, get: function () { return dashboard_kit_1.BUILT_IN_WIDGET_KINDS; } });
|
|
501
|
+
// The stencil kit — a Visio-style palette that drags shape masters onto the
|
|
502
|
+
// canvas (T6/T7). Pairs with listStencils()/registerStencils() above.
|
|
503
|
+
var stencil_kit_1 = require("./lib/stencil-kit");
|
|
504
|
+
Object.defineProperty(exports, "bindStencilPalette", { enumerable: true, get: function () { return stencil_kit_1.bindStencilPalette; } });
|
|
505
|
+
Object.defineProperty(exports, "bindShapeDataPanel", { enumerable: true, get: function () { return stencil_kit_1.bindShapeDataPanel; } });
|
|
506
|
+
Object.defineProperty(exports, "ensureStencilKitStyles", { enumerable: true, get: function () { return stencil_kit_1.ensureStencilKitStyles; } });
|
|
487
507
|
/* ==========================================================================
|
|
488
508
|
* PHASE 0 — THE INVERSION.
|
|
489
509
|
*
|
|
@@ -525,12 +545,12 @@ tslib_1.__exportStar(require("@grafloria/renderer"), exports);
|
|
|
525
545
|
* They are pinned here anyway — they are the most load-bearing names in the
|
|
526
546
|
* package, and pinning costs one line.)
|
|
527
547
|
*/
|
|
528
|
-
var
|
|
529
|
-
Object.defineProperty(exports, "NodeModel", { enumerable: true, get: function () { return
|
|
530
|
-
Object.defineProperty(exports, "PortModel", { enumerable: true, get: function () { return
|
|
531
|
-
Object.defineProperty(exports, "distanceToSegment", { enumerable: true, get: function () { return
|
|
532
|
-
Object.defineProperty(exports, "rotatePoint", { enumerable: true, get: function () { return
|
|
533
|
-
Object.defineProperty(exports, "coalesce", { enumerable: true, get: function () { return
|
|
548
|
+
var engine_13 = require("@grafloria/engine");
|
|
549
|
+
Object.defineProperty(exports, "NodeModel", { enumerable: true, get: function () { return engine_13.NodeModel; } });
|
|
550
|
+
Object.defineProperty(exports, "PortModel", { enumerable: true, get: function () { return engine_13.PortModel; } });
|
|
551
|
+
Object.defineProperty(exports, "distanceToSegment", { enumerable: true, get: function () { return engine_13.distanceToSegment; } });
|
|
552
|
+
Object.defineProperty(exports, "rotatePoint", { enumerable: true, get: function () { return engine_13.rotatePoint; } });
|
|
553
|
+
Object.defineProperty(exports, "coalesce", { enumerable: true, get: function () { return engine_13.coalesce; } });
|
|
534
554
|
// The three genuine VALUE collisions, kept reachable under qualified names.
|
|
535
555
|
// `coalesce` is the one that matters: the engine's coalesces op-log entries for
|
|
536
556
|
// batching, the renderer's merges dirty rectangles for partial redraw. Same
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/element/src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../libs/element/src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { bindStencilPalette } from './palette';
|
|
2
|
+
export type { StencilPaletteApi, StencilPaletteOptions, StencilPaletteHandle, } from './palette';
|
|
3
|
+
export { bindShapeDataPanel } from './shape-data';
|
|
4
|
+
export type { ShapeDataPanelApi, ShapeDataPanelOptions, ShapeDataPanelHandle } from './shape-data';
|
|
5
|
+
export { ensureStencilKitStyles } from './styles';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ensureStencilKitStyles = exports.bindShapeDataPanel = exports.bindStencilPalette = void 0;
|
|
4
|
+
var palette_1 = require("./palette");
|
|
5
|
+
Object.defineProperty(exports, "bindStencilPalette", { enumerable: true, get: function () { return palette_1.bindStencilPalette; } });
|
|
6
|
+
var shape_data_1 = require("./shape-data");
|
|
7
|
+
Object.defineProperty(exports, "bindShapeDataPanel", { enumerable: true, get: function () { return shape_data_1.bindShapeDataPanel; } });
|
|
8
|
+
var styles_1 = require("./styles");
|
|
9
|
+
Object.defineProperty(exports, "ensureStencilKitStyles", { enumerable: true, get: function () { return styles_1.ensureStencilKitStyles; } });
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/element/src/lib/stencil-kit/index.ts"],"names":[],"mappings":";;;AAAA,qCAA+C;AAAtC,6GAAA,kBAAkB,OAAA;AAM3B,2CAAkD;AAAzC,gHAAA,kBAAkB,OAAA;AAE3B,mCAAkD;AAAzC,gHAAA,sBAAsB,OAAA"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The stencil palette — the signature Visio surface: a categorized, searchable
|
|
3
|
+
* list of shape masters you DRAG ONTO THE CANVAS.
|
|
4
|
+
*
|
|
5
|
+
* Two halves, deliberately in one module because they share the drag contract:
|
|
6
|
+
* T6 the palette UI — sections from `listStencils()`, live search, and a
|
|
7
|
+
* thumbnail drawn from the master's OWN outline
|
|
8
|
+
* geometry (`getShape(type).outline(w,h)`), so what
|
|
9
|
+
* you see in the palette is the shape you get.
|
|
10
|
+
* T7 drag-to-place — HTML5 drag-and-drop (not pointer events: the canvas
|
|
11
|
+
* binder consumes pointerdown, and DnD is the gesture
|
|
12
|
+
* browsers already route across two elements). The
|
|
13
|
+
* drop lands the master at the cursor as ONE undoable
|
|
14
|
+
* BatchCommand.
|
|
15
|
+
*/
|
|
16
|
+
import { type Stencil, type NodeTemplate } from '@grafloria/engine';
|
|
17
|
+
/** The bits of a diagram instance the palette needs (kept structural so any
|
|
18
|
+
* host — element, React, Vue — satisfies it without importing a class). */
|
|
19
|
+
export interface StencilPaletteApi {
|
|
20
|
+
getEngine(): any;
|
|
21
|
+
getModel(): any;
|
|
22
|
+
viewport: {
|
|
23
|
+
clientToWorld(x: number, y: number, rect: {
|
|
24
|
+
left: number;
|
|
25
|
+
top: number;
|
|
26
|
+
width: number;
|
|
27
|
+
height: number;
|
|
28
|
+
}): {
|
|
29
|
+
x: number;
|
|
30
|
+
y: number;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export interface StencilPaletteOptions {
|
|
35
|
+
/** Sections to show (default: every built-in stencil). */
|
|
36
|
+
stencils?: Stencil[];
|
|
37
|
+
/** Show the search box (default true). */
|
|
38
|
+
search?: boolean;
|
|
39
|
+
/** Stencil ids to render collapsed initially (default: all but the first). */
|
|
40
|
+
collapsed?: string[];
|
|
41
|
+
/** Data merged into every placed master (e.g. a default label). */
|
|
42
|
+
data?: (master: NodeTemplate) => Record<string, unknown>;
|
|
43
|
+
/** Called after a master is placed on the canvas. */
|
|
44
|
+
onPlace?: (info: {
|
|
45
|
+
master: NodeTemplate;
|
|
46
|
+
nodeId: string;
|
|
47
|
+
x: number;
|
|
48
|
+
y: number;
|
|
49
|
+
}) => void;
|
|
50
|
+
}
|
|
51
|
+
export interface StencilPaletteHandle {
|
|
52
|
+
/** Filter the list programmatically (same as typing in the search box). */
|
|
53
|
+
setSearch(query: string): void;
|
|
54
|
+
/** Place a master at a WORLD point without dragging (keyboard / test path). */
|
|
55
|
+
place(masterId: string, world: {
|
|
56
|
+
x: number;
|
|
57
|
+
y: number;
|
|
58
|
+
}): Promise<string | null>;
|
|
59
|
+
/** Remove listeners and the palette DOM. */
|
|
60
|
+
destroy(): void;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Build a stencil palette in `palette` that drops masters onto `canvas`.
|
|
64
|
+
*
|
|
65
|
+
* @param api the diagram instance (engine + model + viewport)
|
|
66
|
+
* @param hosts `palette`: where the list renders · `canvas`: the drop target
|
|
67
|
+
* (the element the diagram is mounted in)
|
|
68
|
+
*/
|
|
69
|
+
export declare function bindStencilPalette(api: StencilPaletteApi, hosts: {
|
|
70
|
+
palette: HTMLElement;
|
|
71
|
+
canvas: HTMLElement;
|
|
72
|
+
}, options?: StencilPaletteOptions): StencilPaletteHandle;
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.bindStencilPalette = bindStencilPalette;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
/**
|
|
6
|
+
* The stencil palette — the signature Visio surface: a categorized, searchable
|
|
7
|
+
* list of shape masters you DRAG ONTO THE CANVAS.
|
|
8
|
+
*
|
|
9
|
+
* Two halves, deliberately in one module because they share the drag contract:
|
|
10
|
+
* T6 the palette UI — sections from `listStencils()`, live search, and a
|
|
11
|
+
* thumbnail drawn from the master's OWN outline
|
|
12
|
+
* geometry (`getShape(type).outline(w,h)`), so what
|
|
13
|
+
* you see in the palette is the shape you get.
|
|
14
|
+
* T7 drag-to-place — HTML5 drag-and-drop (not pointer events: the canvas
|
|
15
|
+
* binder consumes pointerdown, and DnD is the gesture
|
|
16
|
+
* browsers already route across two elements). The
|
|
17
|
+
* drop lands the master at the cursor as ONE undoable
|
|
18
|
+
* BatchCommand.
|
|
19
|
+
*/
|
|
20
|
+
const engine_1 = require("@grafloria/engine");
|
|
21
|
+
const renderer_1 = require("@grafloria/renderer");
|
|
22
|
+
const styles_1 = require("./styles");
|
|
23
|
+
const SVG_NS = 'http://www.w3.org/2000/svg';
|
|
24
|
+
/** The MIME the palette drags with — namespaced so a page's other DnD is untouched. */
|
|
25
|
+
const DND_TYPE = 'application/x-grafloria-master';
|
|
26
|
+
/** A thumbnail SVG for a master, drawn from its real outline + declared paint. */
|
|
27
|
+
function thumbnail(master, box = 34) {
|
|
28
|
+
var _a, _b, _c, _d, _e, _f;
|
|
29
|
+
const svg = document.createElementNS(SVG_NS, 'svg');
|
|
30
|
+
svg.setAttribute('width', String(box));
|
|
31
|
+
svg.setAttribute('height', String(box));
|
|
32
|
+
svg.setAttribute('viewBox', `0 0 ${box} ${box}`);
|
|
33
|
+
svg.setAttribute('aria-hidden', 'true');
|
|
34
|
+
const struct = (_a = master.structure) !== null && _a !== void 0 ? _a : {};
|
|
35
|
+
const paint = (_b = struct.shape) !== null && _b !== void 0 ? _b : {};
|
|
36
|
+
// Preserve the master's aspect ratio inside the square, with a hairline inset
|
|
37
|
+
// so a 2px stroke isn't clipped at the edges.
|
|
38
|
+
const w0 = Number((_c = struct.size) === null || _c === void 0 ? void 0 : _c.width) || 100;
|
|
39
|
+
const h0 = Number((_d = struct.size) === null || _d === void 0 ? void 0 : _d.height) || 60;
|
|
40
|
+
const pad = 3;
|
|
41
|
+
const s = Math.min((box - pad * 2) / w0, (box - pad * 2) / h0);
|
|
42
|
+
const w = Math.max(6, w0 * s);
|
|
43
|
+
const h = Math.max(6, h0 * s);
|
|
44
|
+
let el;
|
|
45
|
+
try {
|
|
46
|
+
const spec = (0, renderer_1.getShape)(paint.type).outline(w, h);
|
|
47
|
+
el = document.createElementNS(SVG_NS, spec.el);
|
|
48
|
+
for (const [k, v] of Object.entries(spec.geom))
|
|
49
|
+
el.setAttribute(k, String(v));
|
|
50
|
+
}
|
|
51
|
+
catch (_g) {
|
|
52
|
+
el = document.createElementNS(SVG_NS, 'rect');
|
|
53
|
+
el.setAttribute('width', String(w));
|
|
54
|
+
el.setAttribute('height', String(h));
|
|
55
|
+
el.setAttribute('rx', '3');
|
|
56
|
+
}
|
|
57
|
+
el.setAttribute('fill', (_e = paint.fill) !== null && _e !== void 0 ? _e : '#eef1fb');
|
|
58
|
+
el.setAttribute('stroke', (_f = paint.stroke) !== null && _f !== void 0 ? _f : '#3B52D9');
|
|
59
|
+
el.setAttribute('stroke-width', String(Math.min(Number(paint.strokeWidth) || 1.5, 2)));
|
|
60
|
+
const g = document.createElementNS(SVG_NS, 'g');
|
|
61
|
+
g.setAttribute('transform', `translate(${(box - w) / 2} ${(box - h) / 2})`);
|
|
62
|
+
g.appendChild(el);
|
|
63
|
+
svg.appendChild(g);
|
|
64
|
+
return svg;
|
|
65
|
+
}
|
|
66
|
+
/** Root + descendants, so a multi-node master commits (and undoes) as a unit. */
|
|
67
|
+
function subtree(diagram, root) {
|
|
68
|
+
var _a;
|
|
69
|
+
const out = [root];
|
|
70
|
+
const stack = [root];
|
|
71
|
+
while (stack.length) {
|
|
72
|
+
const n = stack.pop();
|
|
73
|
+
const ids = Array.from((_a = n === null || n === void 0 ? void 0 : n.children) !== null && _a !== void 0 ? _a : []);
|
|
74
|
+
for (const id of ids) {
|
|
75
|
+
const c = diagram.getNode(id);
|
|
76
|
+
if (c) {
|
|
77
|
+
out.push(c);
|
|
78
|
+
stack.push(c);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return out;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Build a stencil palette in `palette` that drops masters onto `canvas`.
|
|
86
|
+
*
|
|
87
|
+
* @param api the diagram instance (engine + model + viewport)
|
|
88
|
+
* @param hosts `palette`: where the list renders · `canvas`: the drop target
|
|
89
|
+
* (the element the diagram is mounted in)
|
|
90
|
+
*/
|
|
91
|
+
function bindStencilPalette(api, hosts, options = {}) {
|
|
92
|
+
var _a, _b, _c;
|
|
93
|
+
(0, styles_1.ensureStencilKitStyles)((_a = hosts.palette.ownerDocument) !== null && _a !== void 0 ? _a : document);
|
|
94
|
+
const stencils = (_b = options.stencils) !== null && _b !== void 0 ? _b : (0, engine_1.listStencils)();
|
|
95
|
+
const collapsed = new Set((_c = options.collapsed) !== null && _c !== void 0 ? _c : stencils.slice(1).map((s) => s.id));
|
|
96
|
+
const { palette, canvas } = hosts;
|
|
97
|
+
let query = '';
|
|
98
|
+
palette.classList.add('gf-stencil');
|
|
99
|
+
palette.innerHTML = '';
|
|
100
|
+
// ── search ───────────────────────────────────────────────────────────────
|
|
101
|
+
let input = null;
|
|
102
|
+
if (options.search !== false) {
|
|
103
|
+
const wrap = document.createElement('div');
|
|
104
|
+
wrap.className = 'gf-stencil-search';
|
|
105
|
+
input = document.createElement('input');
|
|
106
|
+
input.type = 'search';
|
|
107
|
+
input.placeholder = 'Search shapes…';
|
|
108
|
+
input.setAttribute('aria-label', 'Search shapes');
|
|
109
|
+
input.addEventListener('input', () => { query = input.value.trim().toLowerCase(); renderList(); });
|
|
110
|
+
wrap.appendChild(input);
|
|
111
|
+
palette.appendChild(wrap);
|
|
112
|
+
}
|
|
113
|
+
const body = document.createElement('div');
|
|
114
|
+
body.className = 'gf-stencil-body';
|
|
115
|
+
palette.appendChild(body);
|
|
116
|
+
/** A master matches on its display name, its id, or any of its tags. */
|
|
117
|
+
const matches = (m) => {
|
|
118
|
+
var _a, _b;
|
|
119
|
+
if (!query)
|
|
120
|
+
return true;
|
|
121
|
+
const meta = (_a = m.meta) !== null && _a !== void 0 ? _a : {};
|
|
122
|
+
const hay = [meta.name, m.id, ...((_b = meta.tags) !== null && _b !== void 0 ? _b : [])].join(' ').toLowerCase();
|
|
123
|
+
return hay.includes(query);
|
|
124
|
+
};
|
|
125
|
+
function renderList() {
|
|
126
|
+
body.innerHTML = '';
|
|
127
|
+
let shown = 0;
|
|
128
|
+
for (const stencil of stencils) {
|
|
129
|
+
const hits = stencil.masters.filter(matches);
|
|
130
|
+
if (hits.length === 0)
|
|
131
|
+
continue;
|
|
132
|
+
shown += hits.length;
|
|
133
|
+
const group = document.createElement('details');
|
|
134
|
+
group.className = 'gf-stencil-group';
|
|
135
|
+
// A search always opens the sections that matched; otherwise honour the
|
|
136
|
+
// caller's collapsed set.
|
|
137
|
+
group.open = query ? true : !collapsed.has(stencil.id);
|
|
138
|
+
group.addEventListener('toggle', () => {
|
|
139
|
+
if (query)
|
|
140
|
+
return;
|
|
141
|
+
if (group.open)
|
|
142
|
+
collapsed.delete(stencil.id);
|
|
143
|
+
else
|
|
144
|
+
collapsed.add(stencil.id);
|
|
145
|
+
});
|
|
146
|
+
const summary = document.createElement('summary');
|
|
147
|
+
summary.append(stencil.name);
|
|
148
|
+
const count = document.createElement('span');
|
|
149
|
+
count.className = 'gf-stencil-count';
|
|
150
|
+
count.textContent = String(hits.length);
|
|
151
|
+
summary.appendChild(count);
|
|
152
|
+
summary.title = stencil.description;
|
|
153
|
+
group.appendChild(summary);
|
|
154
|
+
const items = document.createElement('div');
|
|
155
|
+
items.className = 'gf-stencil-items';
|
|
156
|
+
for (const master of hits)
|
|
157
|
+
items.appendChild(itemEl(master));
|
|
158
|
+
group.appendChild(items);
|
|
159
|
+
body.appendChild(group);
|
|
160
|
+
}
|
|
161
|
+
if (shown === 0) {
|
|
162
|
+
const empty = document.createElement('div');
|
|
163
|
+
empty.className = 'gf-stencil-empty';
|
|
164
|
+
empty.textContent = query ? `No shapes match “${query}”.` : 'No stencils.';
|
|
165
|
+
body.appendChild(empty);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
function itemEl(master) {
|
|
169
|
+
var _a, _b, _c;
|
|
170
|
+
const meta = (_a = master.meta) !== null && _a !== void 0 ? _a : {};
|
|
171
|
+
const el = document.createElement('div');
|
|
172
|
+
el.className = 'gf-stencil-item';
|
|
173
|
+
el.draggable = true;
|
|
174
|
+
el.dataset['masterId'] = master.id;
|
|
175
|
+
el.title = meta.description ? `${meta.name} — ${meta.description}` : (_b = meta.name) !== null && _b !== void 0 ? _b : master.id;
|
|
176
|
+
el.appendChild(thumbnail(master));
|
|
177
|
+
const label = document.createElement('span');
|
|
178
|
+
label.className = 'gf-stencil-label';
|
|
179
|
+
label.textContent = (_c = meta.name) !== null && _c !== void 0 ? _c : master.id;
|
|
180
|
+
el.appendChild(label);
|
|
181
|
+
el.addEventListener('dragstart', (e) => {
|
|
182
|
+
var _a;
|
|
183
|
+
const dt = e.dataTransfer;
|
|
184
|
+
if (!dt)
|
|
185
|
+
return;
|
|
186
|
+
dt.setData(DND_TYPE, master.id);
|
|
187
|
+
dt.setData('text/plain', (_a = meta.name) !== null && _a !== void 0 ? _a : master.id); // so a stray drop is harmless text
|
|
188
|
+
dt.effectAllowed = 'copy';
|
|
189
|
+
});
|
|
190
|
+
return el;
|
|
191
|
+
}
|
|
192
|
+
// ── drop-to-place on the canvas ──────────────────────────────────────────
|
|
193
|
+
const heldMaster = (e) => {
|
|
194
|
+
const dt = e.dataTransfer;
|
|
195
|
+
if (!dt)
|
|
196
|
+
return null;
|
|
197
|
+
// `getData` is empty during dragover in most browsers — the TYPE is the
|
|
198
|
+
// reliable signal there, and the id itself is read on drop.
|
|
199
|
+
return dt.types.includes(DND_TYPE) ? (dt.getData(DND_TYPE) || '') : null;
|
|
200
|
+
};
|
|
201
|
+
const onDragOver = (e) => {
|
|
202
|
+
if (heldMaster(e) === null)
|
|
203
|
+
return;
|
|
204
|
+
e.preventDefault(); // required, or the drop never fires
|
|
205
|
+
if (e.dataTransfer)
|
|
206
|
+
e.dataTransfer.dropEffect = 'copy';
|
|
207
|
+
canvas.classList.add('gf-stencil-target');
|
|
208
|
+
};
|
|
209
|
+
const onDragLeave = (e) => {
|
|
210
|
+
if (e.relatedTarget && canvas.contains(e.relatedTarget))
|
|
211
|
+
return;
|
|
212
|
+
canvas.classList.remove('gf-stencil-target');
|
|
213
|
+
};
|
|
214
|
+
const onDrop = (e) => {
|
|
215
|
+
const id = heldMaster(e);
|
|
216
|
+
canvas.classList.remove('gf-stencil-target');
|
|
217
|
+
if (!id)
|
|
218
|
+
return;
|
|
219
|
+
e.preventDefault();
|
|
220
|
+
const rect = canvas.getBoundingClientRect();
|
|
221
|
+
void place(id, api.viewport.clientToWorld(e.clientX, e.clientY, rect));
|
|
222
|
+
};
|
|
223
|
+
canvas.addEventListener('dragover', onDragOver);
|
|
224
|
+
canvas.addEventListener('dragleave', onDragLeave);
|
|
225
|
+
canvas.addEventListener('drop', onDrop);
|
|
226
|
+
/**
|
|
227
|
+
* Stamp `masterId` centred on a world point, as ONE undo entry.
|
|
228
|
+
*
|
|
229
|
+
* `NodeFactory.createFromTemplate` adds straight to the model (no command), so
|
|
230
|
+
* the created subtree is captured, taken back out, and re-applied through the
|
|
231
|
+
* CommandManager — one Ctrl+Z removes the whole shape, and collab sees a
|
|
232
|
+
* normal add.
|
|
233
|
+
*/
|
|
234
|
+
function place(masterId, world) {
|
|
235
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
236
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
237
|
+
const engine = api.getEngine();
|
|
238
|
+
const diagram = api.getModel();
|
|
239
|
+
const registry = engine === null || engine === void 0 ? void 0 : engine.templateRegistry;
|
|
240
|
+
const master = registry === null || registry === void 0 ? void 0 : registry.get(masterId);
|
|
241
|
+
if (!master || !diagram)
|
|
242
|
+
return null;
|
|
243
|
+
const struct = (_a = master.structure) !== null && _a !== void 0 ? _a : {};
|
|
244
|
+
const w = Number((_b = struct.size) === null || _b === void 0 ? void 0 : _b.width) || 100;
|
|
245
|
+
const h = Number((_c = struct.size) === null || _c === void 0 ? void 0 : _c.height) || 60;
|
|
246
|
+
const at = { x: world.x - w / 2, y: world.y - h / 2 }; // drop centres on the cursor
|
|
247
|
+
const factory = new engine_1.NodeFactory(registry, diagram);
|
|
248
|
+
const root = factory.createFromTemplate(masterId, (_e = (_d = options.data) === null || _d === void 0 ? void 0 : _d.call(options, master)) !== null && _e !== void 0 ? _e : {}, at);
|
|
249
|
+
const created = subtree(diagram, root);
|
|
250
|
+
// Serialize into commands BEFORE detaching (AddNodeCommand snapshots in its
|
|
251
|
+
// constructor), then detach and replay through the command manager.
|
|
252
|
+
const cmds = created.map((n) => new engine_1.AddNodeCommand(n));
|
|
253
|
+
for (const n of [...created].reverse())
|
|
254
|
+
diagram.removeNode(n.id);
|
|
255
|
+
yield engine.commandManager.execute(new engine_1.BatchCommand(`Place ${(_g = (_f = master.meta) === null || _f === void 0 ? void 0 : _f.name) !== null && _g !== void 0 ? _g : masterId}`, cmds));
|
|
256
|
+
(_h = options.onPlace) === null || _h === void 0 ? void 0 : _h.call(options, { master, nodeId: root.id, x: at.x, y: at.y });
|
|
257
|
+
return root.id;
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
renderList();
|
|
261
|
+
return {
|
|
262
|
+
setSearch(q) { query = (q !== null && q !== void 0 ? q : '').trim().toLowerCase(); if (input)
|
|
263
|
+
input.value = q !== null && q !== void 0 ? q : ''; renderList(); },
|
|
264
|
+
place,
|
|
265
|
+
destroy() {
|
|
266
|
+
canvas.removeEventListener('dragover', onDragOver);
|
|
267
|
+
canvas.removeEventListener('dragleave', onDragLeave);
|
|
268
|
+
canvas.removeEventListener('drop', onDrop);
|
|
269
|
+
canvas.classList.remove('gf-stencil-target');
|
|
270
|
+
palette.classList.remove('gf-stencil');
|
|
271
|
+
palette.innerHTML = '';
|
|
272
|
+
},
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
//# sourceMappingURL=palette.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"palette.js","sourceRoot":"","sources":["../../../../../../libs/element/src/lib/stencil-kit/palette.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface ShapeDataPanelApi {
|
|
2
|
+
getEngine(): any;
|
|
3
|
+
getModel(): any;
|
|
4
|
+
on(event: string, handler: (payload: any) => void): () => void;
|
|
5
|
+
}
|
|
6
|
+
export interface ShapeDataPanelOptions {
|
|
7
|
+
/** Heading above the fields (default "Shape data"). */
|
|
8
|
+
title?: string;
|
|
9
|
+
/** Shown when nothing (or more than one thing) is selected. */
|
|
10
|
+
emptyText?: string;
|
|
11
|
+
/** Called after an edit commits. */
|
|
12
|
+
onEdit?: (info: {
|
|
13
|
+
nodeId: string;
|
|
14
|
+
key: string;
|
|
15
|
+
value: unknown;
|
|
16
|
+
}) => void;
|
|
17
|
+
}
|
|
18
|
+
export interface ShapeDataPanelHandle {
|
|
19
|
+
/** Re-read the selection and rebuild the fields. */
|
|
20
|
+
refresh(): void;
|
|
21
|
+
destroy(): void;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Bind a shape-data panel into `host`. It follows the diagram's selection: one
|
|
25
|
+
* node selected → its schema's fields; anything else → the empty message.
|
|
26
|
+
*/
|
|
27
|
+
export declare function bindShapeDataPanel(api: ShapeDataPanelApi, host: HTMLElement, options?: ShapeDataPanelOptions): ShapeDataPanelHandle;
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.bindShapeDataPanel = bindShapeDataPanel;
|
|
4
|
+
/**
|
|
5
|
+
* The shape-data panel — Visio's "Shape Data" window.
|
|
6
|
+
*
|
|
7
|
+
* T9. Every master ships a `dataSchema` (all 80 generated ones do) and the values
|
|
8
|
+
* live on `node.data`. The renderer already had a full `property-schema/` type
|
|
9
|
+
* contract, but it was TYPES ONLY — zero runtime — and the one working property
|
|
10
|
+
* sheet was inside the Angular wrapper, unreachable from a vanilla / React / Vue
|
|
11
|
+
* embed. This is the framework-free runtime: read the selected node's schema,
|
|
12
|
+
* render its fields, and write them back through `SetNodeDataCommand` so every
|
|
13
|
+
* edit is undoable and collab-safe (per-key, matching node.data's LWW registers).
|
|
14
|
+
*/
|
|
15
|
+
const engine_1 = require("@grafloria/engine");
|
|
16
|
+
const styles_1 = require("./styles");
|
|
17
|
+
/** The schema a node's shape data follows, via the master it was stamped from. */
|
|
18
|
+
function schemaFor(engine, node) {
|
|
19
|
+
var _a, _b, _c, _d;
|
|
20
|
+
const templateId = (_a = node === null || node === void 0 ? void 0 : node.getMetadata) === null || _a === void 0 ? void 0 : _a.call(node, 'templateId');
|
|
21
|
+
if (!templateId)
|
|
22
|
+
return null;
|
|
23
|
+
const master = (_c = (_b = engine === null || engine === void 0 ? void 0 : engine.templateRegistry) === null || _b === void 0 ? void 0 : _b.get) === null || _c === void 0 ? void 0 : _c.call(_b, templateId);
|
|
24
|
+
const props = (_d = master === null || master === void 0 ? void 0 : master.dataSchema) === null || _d === void 0 ? void 0 : _d.properties;
|
|
25
|
+
return props && typeof props === 'object' ? props : null;
|
|
26
|
+
}
|
|
27
|
+
/** Turn `unitCost` / `unit_cost` into "Unit cost" for the field label. */
|
|
28
|
+
function humanize(key) {
|
|
29
|
+
const spaced = key.replace(/[_-]+/g, ' ').replace(/([a-z0-9])([A-Z])/g, '$1 $2');
|
|
30
|
+
return spaced.charAt(0).toUpperCase() + spaced.slice(1);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Bind a shape-data panel into `host`. It follows the diagram's selection: one
|
|
34
|
+
* node selected → its schema's fields; anything else → the empty message.
|
|
35
|
+
*/
|
|
36
|
+
function bindShapeDataPanel(api, host, options = {}) {
|
|
37
|
+
var _a, _b, _c;
|
|
38
|
+
(0, styles_1.ensureStencilKitStyles)((_a = host.ownerDocument) !== null && _a !== void 0 ? _a : document);
|
|
39
|
+
host.classList.add('gf-shapedata');
|
|
40
|
+
const title = (_b = options.title) !== null && _b !== void 0 ? _b : 'Shape data';
|
|
41
|
+
const emptyText = (_c = options.emptyText) !== null && _c !== void 0 ? _c : 'Select a shape to edit its data.';
|
|
42
|
+
function render() {
|
|
43
|
+
var _a, _b, _c, _d, _e, _f;
|
|
44
|
+
host.innerHTML = '';
|
|
45
|
+
const head = document.createElement('div');
|
|
46
|
+
head.className = 'gf-sd-title';
|
|
47
|
+
head.textContent = title;
|
|
48
|
+
host.appendChild(head);
|
|
49
|
+
const diagram = api.getModel();
|
|
50
|
+
const engine = api.getEngine();
|
|
51
|
+
const selected = ((_b = (_a = diagram === null || diagram === void 0 ? void 0 : diagram.getSelectedNodes) === null || _a === void 0 ? void 0 : _a.call(diagram)) !== null && _b !== void 0 ? _b : []);
|
|
52
|
+
if (selected.length !== 1) {
|
|
53
|
+
const empty = document.createElement('div');
|
|
54
|
+
empty.className = 'gf-sd-empty';
|
|
55
|
+
empty.textContent = selected.length > 1 ? 'Select a single shape.' : emptyText;
|
|
56
|
+
host.appendChild(empty);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const node = selected[0];
|
|
60
|
+
const props = schemaFor(engine, node);
|
|
61
|
+
if (!props || Object.keys(props).length === 0) {
|
|
62
|
+
const empty = document.createElement('div');
|
|
63
|
+
empty.className = 'gf-sd-empty';
|
|
64
|
+
empty.textContent = 'This shape has no data fields.';
|
|
65
|
+
host.appendChild(empty);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const form = document.createElement('div');
|
|
69
|
+
form.className = 'gf-sd-fields';
|
|
70
|
+
for (const [key, prop] of Object.entries(props)) {
|
|
71
|
+
const row = document.createElement('label');
|
|
72
|
+
row.className = 'gf-sd-row';
|
|
73
|
+
const label = document.createElement('span');
|
|
74
|
+
label.className = 'gf-sd-label';
|
|
75
|
+
label.textContent = (_c = prop.title) !== null && _c !== void 0 ? _c : humanize(key);
|
|
76
|
+
if (prop.description)
|
|
77
|
+
row.title = prop.description;
|
|
78
|
+
row.appendChild(label);
|
|
79
|
+
const current = (_f = (_e = (_d = node.getData) === null || _d === void 0 ? void 0 : _d.call(node, key)) !== null && _e !== void 0 ? _e : prop.default) !== null && _f !== void 0 ? _f : '';
|
|
80
|
+
// Commit through the command so the edit is undoable and collab-safe.
|
|
81
|
+
const commit = (value) => {
|
|
82
|
+
var _a;
|
|
83
|
+
void engine.commandManager.execute(new engine_1.SetNodeDataCommand(node.id, { [key]: value }));
|
|
84
|
+
(_a = options.onEdit) === null || _a === void 0 ? void 0 : _a.call(options, { nodeId: node.id, key, value });
|
|
85
|
+
};
|
|
86
|
+
let field;
|
|
87
|
+
if (Array.isArray(prop.enum) && prop.enum.length > 0) {
|
|
88
|
+
const sel = document.createElement('select');
|
|
89
|
+
sel.className = 'gf-sd-input';
|
|
90
|
+
for (const opt of prop.enum) {
|
|
91
|
+
const o = document.createElement('option');
|
|
92
|
+
o.value = String(opt);
|
|
93
|
+
o.textContent = String(opt);
|
|
94
|
+
if (String(opt) === String(current))
|
|
95
|
+
o.selected = true;
|
|
96
|
+
sel.appendChild(o);
|
|
97
|
+
}
|
|
98
|
+
sel.addEventListener('change', () => commit(sel.value));
|
|
99
|
+
field = sel;
|
|
100
|
+
}
|
|
101
|
+
else if (prop.type === 'boolean') {
|
|
102
|
+
const box = document.createElement('input');
|
|
103
|
+
box.type = 'checkbox';
|
|
104
|
+
box.className = 'gf-sd-check';
|
|
105
|
+
box.checked = current === true || current === 'true';
|
|
106
|
+
box.addEventListener('change', () => commit(box.checked));
|
|
107
|
+
field = box;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
const input = document.createElement('input');
|
|
111
|
+
const numeric = prop.type === 'number' || prop.type === 'integer';
|
|
112
|
+
input.type = numeric ? 'number' : 'text';
|
|
113
|
+
input.className = 'gf-sd-input';
|
|
114
|
+
input.value = current === undefined || current === null ? '' : String(current);
|
|
115
|
+
// Commit on change (blur / Enter), not per keystroke: one undo entry per edit.
|
|
116
|
+
input.addEventListener('change', () => {
|
|
117
|
+
var _a, _b;
|
|
118
|
+
if (numeric) {
|
|
119
|
+
const n = input.value === '' ? null : Number(input.value);
|
|
120
|
+
if (n !== null && Number.isNaN(n)) {
|
|
121
|
+
input.value = String((_b = (_a = node.getData) === null || _a === void 0 ? void 0 : _a.call(node, key)) !== null && _b !== void 0 ? _b : '');
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
commit(n);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
commit(input.value);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
input.addEventListener('keydown', (e) => {
|
|
131
|
+
e.stopPropagation(); // keep canvas keys out of the field
|
|
132
|
+
if (e.key === 'Enter')
|
|
133
|
+
input.blur();
|
|
134
|
+
});
|
|
135
|
+
field = input;
|
|
136
|
+
}
|
|
137
|
+
row.appendChild(field);
|
|
138
|
+
form.appendChild(row);
|
|
139
|
+
}
|
|
140
|
+
host.appendChild(form);
|
|
141
|
+
}
|
|
142
|
+
const off = api.on('selection:change', () => render());
|
|
143
|
+
render();
|
|
144
|
+
return {
|
|
145
|
+
refresh: render,
|
|
146
|
+
destroy() {
|
|
147
|
+
off === null || off === void 0 ? void 0 : off();
|
|
148
|
+
host.classList.remove('gf-shapedata');
|
|
149
|
+
host.innerHTML = '';
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=shape-data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shape-data.js","sourceRoot":"","sources":["../../../../../../libs/element/src/lib/stencil-kit/shape-data.ts"],"names":[],"mappings":";;AA+DA,gDAuHC;AAtLD;;;;;;;;;;GAUG;AACH,8CAAuD;AACvD,qCAAkD;AAgClD,kFAAkF;AAClF,SAAS,SAAS,CAAC,MAAW,EAAE,IAAS;;IACvC,MAAM,UAAU,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,qDAAG,YAAY,CAAC,CAAC;IACrD,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,MAAM,GAAG,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,gBAAgB,0CAAE,GAAG,mDAAG,UAAU,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,0CAAE,UAAU,CAAC;IAC7C,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAoC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3F,CAAC;AAED,0EAA0E;AAC1E,SAAS,QAAQ,CAAC,GAAW;IAC3B,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;IACjF,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAChC,GAAsB,EACtB,IAAiB,EACjB,UAAiC,EAAE;;IAEnC,IAAA,+BAAsB,EAAC,MAAA,IAAI,CAAC,aAAa,mCAAI,QAAQ,CAAC,CAAC;IACvD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAEnC,MAAM,KAAK,GAAG,MAAA,OAAO,CAAC,KAAK,mCAAI,YAAY,CAAC;IAC5C,MAAM,SAAS,GAAG,MAAA,OAAO,CAAC,SAAS,mCAAI,kCAAkC,CAAC;IAE1E,SAAS,MAAM;;QACb,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEvB,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,CAAC,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,gBAAgB,uDAAI,mCAAI,EAAE,CAAU,CAAC;QAEhE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC5C,KAAK,CAAC,SAAS,GAAG,aAAa,CAAC;YAChC,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/E,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC5C,KAAK,CAAC,SAAS,GAAG,aAAa,CAAC;YAChC,KAAK,CAAC,WAAW,GAAG,gCAAgC,CAAC;YACrD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC;QAEhC,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC5C,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC;YAE5B,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC7C,KAAK,CAAC,SAAS,GAAG,aAAa,CAAC;YAChC,KAAK,CAAC,WAAW,GAAG,MAAA,IAAI,CAAC,KAAK,mCAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;YAChD,IAAI,IAAI,CAAC,WAAW;gBAAE,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;YACnD,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAEvB,MAAM,OAAO,GAAG,MAAA,MAAA,MAAA,IAAI,CAAC,OAAO,qDAAG,GAAG,CAAC,mCAAI,IAAI,CAAC,OAAO,mCAAI,EAAE,CAAC;YAC1D,sEAAsE;YACtE,MAAM,MAAM,GAAG,CAAC,KAAc,EAAE,EAAE;;gBAChC,KAAK,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,2BAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBACtF,MAAA,OAAO,CAAC,MAAM,wDAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YACpD,CAAC,CAAC;YAEF,IAAI,KAAkB,CAAC;YACvB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC7C,GAAG,CAAC,SAAS,GAAG,aAAa,CAAC;gBAC9B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5B,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAC3C,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;oBACtB,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC5B,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC;wBAAE,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACvD,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACrB,CAAC;gBACD,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;gBACxD,KAAK,GAAG,GAAG,CAAC;YACd,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC5C,GAAG,CAAC,IAAI,GAAG,UAAU,CAAC;gBACtB,GAAG,CAAC,SAAS,GAAG,aAAa,CAAC;gBAC9B,GAAG,CAAC,OAAO,GAAG,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,CAAC;gBACrD,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC1D,KAAK,GAAG,GAAG,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;gBAClE,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;gBACzC,KAAK,CAAC,SAAS,GAAG,aAAa,CAAC;gBAChC,KAAK,CAAC,KAAK,GAAG,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC/E,+EAA+E;gBAC/E,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;;oBACpC,IAAI,OAAO,EAAE,CAAC;wBACZ,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBAC1D,IAAI,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;4BAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,MAAA,MAAA,IAAI,CAAC,OAAO,qDAAG,GAAG,CAAC,mCAAI,EAAE,CAAC,CAAC;4BAAC,OAAO;wBAAC,CAAC;wBAC/F,MAAM,CAAC,CAAC,CAAC,CAAC;oBACZ,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACtB,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;oBACtC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAuB,oCAAoC;oBAC/E,IAAK,CAAmB,CAAC,GAAG,KAAK,OAAO;wBAAE,KAAK,CAAC,IAAI,EAAE,CAAC;gBACzD,CAAC,CAAC,CAAC;gBACH,KAAK,GAAG,KAAK,CAAC;YAChB,CAAC;YACD,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACvB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IACvD,MAAM,EAAE,CAAC;IAET,OAAO;QACL,OAAO,EAAE,MAAM;QACf,OAAO;YACL,GAAG,aAAH,GAAG,uBAAH,GAAG,EAAI,CAAC;YACR,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ensureStencilKitStyles = ensureStencilKitStyles;
|
|
4
|
+
/**
|
|
5
|
+
* Stencil-palette styles, injected once per document (same discipline as the
|
|
6
|
+
* dashboard kit: the kit owns its chrome so a host gets a working palette
|
|
7
|
+
* without copying CSS, and every colour is a themable custom property).
|
|
8
|
+
*/
|
|
9
|
+
const STENCIL_KIT_STYLE_ID = 'grafloria-stencil-kit-styles';
|
|
10
|
+
const CSS = `
|
|
11
|
+
.gf-stencil {
|
|
12
|
+
--gf-st-bg: #fff; --gf-st-ink: #1e2436; --gf-st-mut: #6b7280;
|
|
13
|
+
--gf-st-line: #e5e7eb; --gf-st-accent: #3B52D9; --gf-st-hover: #f5f7ff;
|
|
14
|
+
display: flex; flex-direction: column; min-height: 0; height: 100%;
|
|
15
|
+
background: var(--gf-st-bg); color: var(--gf-st-ink);
|
|
16
|
+
font: 13px/1.4 ui-sans-serif, system-ui, -apple-system, sans-serif;
|
|
17
|
+
border-right: 1px solid var(--gf-st-line); box-sizing: border-box;
|
|
18
|
+
}
|
|
19
|
+
@media (prefers-color-scheme: dark) {
|
|
20
|
+
.gf-stencil {
|
|
21
|
+
--gf-st-bg: #161a24; --gf-st-ink: #e8ecfb; --gf-st-mut: #9aa4bf;
|
|
22
|
+
--gf-st-line: #2a3040; --gf-st-accent: #8fa2ff; --gf-st-hover: #1e2536;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
.gf-stencil-search { padding: 10px; border-bottom: 1px solid var(--gf-st-line); }
|
|
26
|
+
.gf-stencil-search input {
|
|
27
|
+
width: 100%; box-sizing: border-box; padding: 7px 10px; border-radius: 8px;
|
|
28
|
+
border: 1px solid var(--gf-st-line); background: var(--gf-st-bg);
|
|
29
|
+
color: var(--gf-st-ink); font: inherit; outline: none;
|
|
30
|
+
}
|
|
31
|
+
.gf-stencil-search input:focus { border-color: var(--gf-st-accent); }
|
|
32
|
+
.gf-stencil-body { overflow: auto; flex: 1; min-height: 0; padding-bottom: 8px; }
|
|
33
|
+
.gf-stencil-group > summary {
|
|
34
|
+
cursor: pointer; padding: 8px 10px; font-weight: 600; font-size: 12px;
|
|
35
|
+
letter-spacing: .02em; text-transform: uppercase; color: var(--gf-st-mut);
|
|
36
|
+
list-style: none; user-select: none; display: flex; align-items: center; gap: 6px;
|
|
37
|
+
}
|
|
38
|
+
.gf-stencil-group > summary::-webkit-details-marker { display: none; }
|
|
39
|
+
.gf-stencil-group > summary::before { content: '▸'; font-size: 10px; transition: transform .15s; }
|
|
40
|
+
.gf-stencil-group[open] > summary::before { transform: rotate(90deg); }
|
|
41
|
+
.gf-stencil-group > summary:hover { color: var(--gf-st-ink); }
|
|
42
|
+
.gf-stencil-count { margin-left: auto; font-weight: 500; opacity: .7; text-transform: none; }
|
|
43
|
+
.gf-stencil-items {
|
|
44
|
+
display: grid; grid-template-columns: repeat(auto-fill, minmax(74px, 1fr));
|
|
45
|
+
gap: 4px; padding: 2px 8px 10px;
|
|
46
|
+
}
|
|
47
|
+
.gf-stencil-item {
|
|
48
|
+
display: flex; flex-direction: column; align-items: center; gap: 4px;
|
|
49
|
+
padding: 8px 4px; border-radius: 8px; cursor: grab; border: 1px solid transparent;
|
|
50
|
+
text-align: center; background: none;
|
|
51
|
+
}
|
|
52
|
+
.gf-stencil-item:hover { background: var(--gf-st-hover); border-color: var(--gf-st-line); }
|
|
53
|
+
.gf-stencil-item:active { cursor: grabbing; }
|
|
54
|
+
.gf-stencil-item svg { display: block; overflow: visible; }
|
|
55
|
+
.gf-stencil-label {
|
|
56
|
+
font-size: 10.5px; color: var(--gf-st-mut); line-height: 1.25;
|
|
57
|
+
display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
|
|
58
|
+
overflow: hidden; word-break: break-word;
|
|
59
|
+
}
|
|
60
|
+
.gf-stencil-item:hover .gf-stencil-label { color: var(--gf-st-ink); }
|
|
61
|
+
.gf-stencil-empty { padding: 18px 12px; color: var(--gf-st-mut); font-size: 12px; text-align: center; }
|
|
62
|
+
.gf-shapedata {
|
|
63
|
+
--gf-st-bg: #fff; --gf-st-ink: #1e2436; --gf-st-mut: #6b7280;
|
|
64
|
+
--gf-st-line: #e5e7eb; --gf-st-accent: #3B52D9;
|
|
65
|
+
display: flex; flex-direction: column; height: 100%; box-sizing: border-box;
|
|
66
|
+
background: var(--gf-st-bg); color: var(--gf-st-ink); overflow: auto;
|
|
67
|
+
font: 13px/1.4 ui-sans-serif, system-ui, -apple-system, sans-serif;
|
|
68
|
+
border-left: 1px solid var(--gf-st-line);
|
|
69
|
+
}
|
|
70
|
+
@media (prefers-color-scheme: dark) {
|
|
71
|
+
.gf-shapedata { --gf-st-bg: #161a24; --gf-st-ink: #e8ecfb; --gf-st-mut: #9aa4bf; --gf-st-line: #2a3040; --gf-st-accent: #8fa2ff; }
|
|
72
|
+
}
|
|
73
|
+
.gf-sd-title {
|
|
74
|
+
padding: 10px 12px; font-weight: 600; font-size: 12px; text-transform: uppercase;
|
|
75
|
+
letter-spacing: .02em; color: var(--gf-st-mut); border-bottom: 1px solid var(--gf-st-line);
|
|
76
|
+
}
|
|
77
|
+
.gf-sd-empty { padding: 16px 12px; color: var(--gf-st-mut); font-size: 12px; }
|
|
78
|
+
.gf-sd-fields { display: flex; flex-direction: column; gap: 8px; padding: 12px; }
|
|
79
|
+
.gf-sd-row { display: flex; flex-direction: column; gap: 3px; }
|
|
80
|
+
.gf-sd-label { font-size: 11px; color: var(--gf-st-mut); }
|
|
81
|
+
.gf-sd-input {
|
|
82
|
+
padding: 6px 8px; border: 1px solid var(--gf-st-line); border-radius: 7px;
|
|
83
|
+
background: var(--gf-st-bg); color: var(--gf-st-ink); font: inherit; outline: none; width: 100%; box-sizing: border-box;
|
|
84
|
+
}
|
|
85
|
+
.gf-sd-input:focus { border-color: var(--gf-st-accent); }
|
|
86
|
+
.gf-sd-check { width: 16px; height: 16px; accent-color: var(--gf-st-accent); }
|
|
87
|
+
|
|
88
|
+
/* The canvas while a stencil is held over it. */
|
|
89
|
+
.gf-stencil-target { outline: 2px dashed var(--gf-st-accent); outline-offset: -3px; }
|
|
90
|
+
`;
|
|
91
|
+
/** Inject the palette stylesheet once per document. */
|
|
92
|
+
function ensureStencilKitStyles(doc = document) {
|
|
93
|
+
if (doc.getElementById(STENCIL_KIT_STYLE_ID))
|
|
94
|
+
return;
|
|
95
|
+
const style = doc.createElement('style');
|
|
96
|
+
style.id = STENCIL_KIT_STYLE_ID;
|
|
97
|
+
style.textContent = CSS;
|
|
98
|
+
doc.head.appendChild(style);
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../../libs/element/src/lib/stencil-kit/styles.ts"],"names":[],"mappings":";;AA0FA,wDAMC;AAhGD;;;;GAIG;AACH,MAAM,oBAAoB,GAAG,8BAA8B,CAAC;AAE5D,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgFX,CAAC;AAEF,uDAAuD;AACvD,SAAgB,sBAAsB,CAAC,MAAgB,QAAQ;IAC7D,IAAI,GAAG,CAAC,cAAc,CAAC,oBAAoB,CAAC;QAAE,OAAO;IACrD,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,GAAG,oBAAoB,CAAC;IAChC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;IACxB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
|