@almadar/std 16.189.0 → 16.191.0

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.
@@ -24,6 +24,7 @@ orbital ModalRecordOrbital {
24
24
  name : string @description "A user-facing identifier for the modal." @synonyms "title, label, identifier"
25
25
  description : string @description "A textual explanation of the modal's content or function." @synonyms "details, explanation, notes, summary"
26
26
  status : "active" | "inactive" | "pending" @description "Current operational state of the record." @synonyms "state, condition, flag" = active
27
+ seedRow : ModalRecord @intrinsic @description "The row an edit-mode OPEN pre-fills from when its payload carries no row. Stashed by SEED — hosts route the surface's loaded event here (e.g. a document look's RecordItemLoaded) so scalar-only action events ({ id }) can still open a fully seeded settings form." = {}
27
28
  createdAt : string
28
29
  }
29
30
 
@@ -35,12 +36,16 @@ orbital ModalRecordOrbital {
35
36
  (fetch ModalRecord {
36
37
  emit: { failure: ModalRecordLoadFailed, success: ModalRecordLoaded }
37
38
  })
39
+ ;; stash only — a SEED never opens anything; OPEN reads it on demand
40
+ SEED -> closed
41
+ (set @entity.seedRow (object/merge ?row {}))
38
42
  ;; Mode-aware guard: in create mode the modal opens unconditionally
39
- ;; (no row exists yet); in edit mode @payload.row must be present
40
- ;; or the OPEN is rejected (no silent first-row fallback). The
41
- ;; @config.mode literal is substituted at molecule inline time —
42
- ;; atoms validate this with @config allowed-but-unresolved.
43
- OPEN -> open when (or ["=", @config.mode, create] ?row)
43
+ ;; (no row exists yet); in edit mode the row must be present — on the
44
+ ;; OPEN payload or already stashed by SEED — or the OPEN is rejected
45
+ ;; (no silent first-row fallback). The @config.mode literal is
46
+ ;; substituted at molecule inline time — atoms validate this with
47
+ ;; @config allowed-but-unresolved.
48
+ OPEN -> open when (or ["=", @config.mode, create] ?row ["!=", (str/default (object/get @entity.seedRow id) ""), ""])
44
49
  (set @entity.id ?id)
45
50
  (render-ui @config.detailSlot {
46
51
  children: [{
@@ -54,7 +59,7 @@ orbital ModalRecordOrbital {
54
59
  type: stack
55
60
  }, { type: divider }, {
56
61
  cancelEvent: CLOSE
57
- entity: ?row
62
+ entity: (object/merge @entity.seedRow (object/merge ?row {}))
58
63
  fieldOverrides: @config.fieldOverrides
59
64
  fields: @config.fields
60
65
  mode: @config.mode
@@ -68,6 +73,9 @@ orbital ModalRecordOrbital {
68
73
  }
69
74
 
70
75
  state open {
76
+ ;; a refetch echo while the modal is open refreshes the stash in place
77
+ SEED -> open
78
+ (set @entity.seedRow (object/merge ?row {}))
71
79
  CLOSE -> closed
72
80
  (render-ui @config.detailSlot null)
73
81
  (notify Cancelled info)
@@ -104,6 +112,12 @@ orbital ModalRecordOrbital {
104
112
  @description "A request to display the modal window."
105
113
  @synonyms "show, display, present, reveal"
106
114
  @tier "domain"
115
+ SEED {
116
+ row : ModalRecord
117
+ }
118
+ @description "Stash the row an edit-mode OPEN will pre-fill from. Hosts route the owning surface's loaded event here (e.g. RecordItemLoaded from a document look) so an OPEN carrying only { id } still opens a fully seeded form."
119
+ @synonyms "preload row, stash record, seed form, prefill"
120
+ @tier "domain"
107
121
  SAVE {
108
122
  data : @entity!
109
123
  }
@@ -20,7 +20,7 @@ orbital RecordItemOrbital {
20
20
  status : "active" | "inactive" | "pending" @description "The record's current state." @synonyms "state, condition, stage" = active
21
21
  slug : string @description "URL-friendly identifier, for records opened by address instead of id." @synonyms "permalink, url key, address" = ""
22
22
  content : string @description "The record's rich-text body as HTML, edited in place by the document look." @synonyms "body, text, document, article body" = ""
23
- loadedRow : object @intrinsic @description "The full row exactly as last fetched (relations hydrated when config.include asks). The document look binds it as the panel's entity and hands it to header actions as ?row, so a settings modal seeds from the real record instead of the atom's four mapped columns." = {}
23
+ loadedRow : object @intrinsic @description "The full row exactly as last fetched (relations hydrated when config.include asks). The details drawer binds it, and hosts that need it (e.g. a settings modal) stash it from RecordItemLoaded — the document panel itself takes only scalar props and emits scalar payloads ({ id, title })." = {}
24
24
  openDraft : string @intrinsic @description "Set from the navigate payload when the surface was opened on a record that was JUST minted blank; read once the row loads to decide whether the document body opens authoring (draft) or read-only. Absent on a refresh or a normal open, so the draft entry never repeats." @synonyms "new document, just created, draft open" = ""
25
25
  createdAt : string
26
26
  }
@@ -589,7 +589,7 @@ orbital RecordItemOrbital {
589
589
  actions: @config.actions
590
590
  editEvent: EDIT_CONTENT
591
591
  editLabel: @config.editLabel
592
- entity: @entity.loadedRow
592
+ id: @entity.id
593
593
  maxInlineActions: @config.maxInlineActions
594
594
  placeholder: @config.placeholder
595
595
  subtitle: @entity.description
@@ -609,7 +609,7 @@ orbital RecordItemOrbital {
609
609
  doneEvent: DONE_EDITING
610
610
  doneLabel: @config.doneLabel
611
611
  editing: true
612
- entity: @entity.loadedRow
612
+ id: @entity.id
613
613
  maxInlineActions: @config.maxInlineActions
614
614
  placeholder: @config.placeholder
615
615
  subtitle: @entity.description
@@ -2,7 +2,6 @@ app ui-document-panel "1.0.0"
2
2
  "DocumentPanel — a record rendered as one continuous document: editable title over the rich-text body, editing controls tucked into the header corner. — UI factory (1:1 with the @almadar/ui document-panel pattern)."
3
3
  ;; @capabilities "document page, note editor, wiki page, article editor, writing surface, rich text document, content editing canvas"
4
4
  orbital DocumentPanelOrbital {
5
- type DocumentPanelLoaded = Event { data : [DocumentPanelItem] } "DocumentPanel rows finished loading; payload.data holds the collection"
6
5
  type DocumentPanelActionsItem = {
7
6
  label : string!
8
7
  event : string
@@ -21,31 +20,9 @@ orbital DocumentPanelOrbital {
21
20
 
22
21
  state idle {
23
22
  INIT -> idle
24
- (fetch DocumentPanelItem { emit: { success: DocumentPanelLoaded } })
25
23
  (set @entity.title @config.title)
26
24
  (set @entity.value @config.value)
27
25
  (render-ui main {
28
- entity: @entity
29
- title: @entity.title
30
- subtitle: @config.subtitle
31
- value: @entity.value
32
- actions: @config.actions
33
- maxInlineActions: @config.maxInlineActions
34
- editing: @config.editing
35
- titleCommitEvent: @config.titleCommitEvent
36
- contentChangeEvent: @config.contentChangeEvent
37
- editEvent: @config.editEvent
38
- doneEvent: @config.doneEvent
39
- editLabel: @config.editLabel
40
- doneLabel: @config.doneLabel
41
- autosaveHint: @config.autosaveHint
42
- placeholder: @config.placeholder
43
- className: @config.className
44
- type: document-panel
45
- })
46
- DocumentPanelLoaded -> idle
47
- (render-ui main {
48
- entity: @payload.data
49
26
  title: @entity.title
50
27
  subtitle: @config.subtitle
51
28
  value: @entity.value
@@ -66,7 +43,6 @@ orbital DocumentPanelOrbital {
66
43
  TITLE_COMMIT -> idle
67
44
  (set @entity.title ?title)
68
45
  (render-ui main {
69
- entity: @entity
70
46
  title: @entity.title
71
47
  subtitle: @config.subtitle
72
48
  value: @entity.value
@@ -87,7 +63,6 @@ orbital DocumentPanelOrbital {
87
63
  CONTENT_CHANGE -> idle
88
64
  (set @entity.value ?value)
89
65
  (render-ui main {
90
- entity: @entity
91
66
  title: @entity.title
92
67
  subtitle: @config.subtitle
93
68
  value: @entity.value
@@ -129,10 +104,6 @@ orbital DocumentPanelOrbital {
129
104
  }
130
105
  @description "Emitted by the Done button that ends the editing session: { id }"
131
106
  @tier "essential"
132
- DocumentPanelLoaded
133
- @description "DocumentPanel rows finished loading; payload.data holds the collection."
134
- @synonyms "loaded, fetched, retrieved"
135
- @tier "essential"
136
107
  }
137
108
 
138
109
  listens {
@@ -107,6 +107,7 @@ orbital PlatformerBodyOrbital {
107
107
  (let ((rightSamp (if @inRange (array/first (array/filter @config.skateCurve (fn s (> (object/get @s x) @cx)))) { x: 1, y: 0 })))
108
108
  (let ((slope (if @inRange (/ (- (object/get @rightSamp y) (object/get @leftSamp y)) (- (object/get @rightSamp x) (object/get @leftSamp x))) 0)))
109
109
  (let ((curveY (if @inRange (+ (object/get @leftSamp y) (* @slope (- @cx (object/get @leftSamp x)))) 0)))
110
+ (let ((gapBreak (and (> @config.skateMaxGap 0) (> (- (object/get @rightSamp x) (object/get @leftSamp x)) @config.skateMaxGap))))
110
111
  (let ((curveMod (if (and @config.curveModsEnabled @inRange) (array/find @entity.curveMods (fn m (and (>= @cx (object/get @m x0)) (<= @cx (object/get @m x1))))) null)))
111
112
  (let ((modX (if (== @curveMod null) @cx (- @cx (object/get @curveMod h)))))
112
113
  (let ((modInRange (and (!= @curveMod null) (and (>= @modX (object/get (array/first @config.skateCurve) x)) (< @modX (object/get (array/last @config.skateCurve) x))))))
@@ -117,7 +118,7 @@ orbital PlatformerBodyOrbital {
117
118
  (let ((slope (if (== @curveMod null) @slope (* (object/get @curveMod a) @modSlope))))
118
119
  (let ((curveY (if (== @curveMod null) @curveY (+ (* (object/get @curveMod a) @modCurveY) (object/get @curveMod k)))))
119
120
  (let ((movingUp (< (* @vy1 @gdir) -0.01)))
120
- (let ((skateNow (and @inRange (and (<= (math/abs (- @ny2 @curveY)) @config.skateSnap) (and (or @landed @entity.skating) (or @entity.body.grounded (not @movingUp)))))))
121
+ (let ((skateNow (and @inRange (and (not @gapBreak) (and (<= (math/abs (- @ny2 @curveY)) @config.skateSnap) (and (or @landed @entity.skating) (or @entity.body.grounded (not @movingUp))))))))
121
122
  (let ((vx2 (if @skateNow (math/clamp (+ @entity.body.vx (* (/ (* @config.gravity @slope) (+ 1 (* @slope @slope))) 0.033)) (- 0 @config.maxFallSpeed) @config.maxFallSpeed) @entity.body.vx)))
122
123
  (let ((vx3 (if (== @drift null) @vx2 (math/clamp (+ @vx2 (* @dax 0.033)) (- 0 @config.maxFallSpeed) @config.maxFallSpeed))))
123
124
  (let ((fy (if @skateNow @curveY @ny2)) (fvy (if @skateNow (* (* @vx2 (math/cos (math/atan @slope))) (math/sin (math/atan @slope))) @vy2)) (fgrounded (or @landed @skateNow)))
@@ -155,7 +156,7 @@ orbital PlatformerBodyOrbital {
155
156
  (set @entity.fell true)
156
157
  (emit BODY_FELL { x: @nx, y: @fy }))
157
158
  null)
158
- (emit BODY_MOVED { x: @nx, y: @fy, vx: @entity.body.vx, vy: @fvy, grounded: @fgrounded, skating: @skateNow, speed: (math/hypot @entity.body.vx @fvy) })))))))))))))))))))))))))))))))))))))
159
+ (emit BODY_MOVED { x: @nx, y: @fy, vx: @entity.body.vx, vy: @fvy, grounded: @fgrounded, skating: @skateNow, speed: (math/hypot @entity.body.vx @fvy) }))))))))))))))))))))))))))))))))))))))
159
160
  }
160
161
 
161
162
  emits {
@@ -279,6 +280,10 @@ orbital PlatformerBodyOrbital {
279
280
  @label "Skate Curve"
280
281
  @description "Surface samples (x strictly increasing) the body skates when skate is on; y is the surface height for the body's MIN corner, linearly interpolated between bracketing samples — mirror the render-side curve so what you see is what you ride"
281
282
  @tier "domain"
283
+ skateMaxGap : number = 0
284
+ @label "Skate Max Gap"
285
+ @description "Largest x-gap between consecutive skateCurve samples that still counts as surface. 0 = unlimited (sparse two-sample lines skate fine). Dense resampled curves with real gaps between segments (stitched worlds) MUST set this — otherwise the sampler invents a skatable chord across every gap (an invisible line above the bridge/terrain that the body snaps to and glides along)."
286
+ @tier "domain"
282
287
  skateSnap : number = 0.75
283
288
  @label "Skate Snap"
284
289
  @description "Max vertical gap (world units) between the body's min corner and the curve surface for skating to engage or stay engaged; larger values grab earlier on landing, smaller values release sooner on bumps"
@@ -64,6 +64,15 @@
64
64
  "parent": "trt_01KXG04GVS1W2103BQKJT7KZRZ",
65
65
  "renames": []
66
66
  },
67
+ "evt_01M15CRJ6RE1E1ZFKT9Y1PXNZK": {
68
+ "bakedName": "SEED",
69
+ "curName": "SEED",
70
+ "id": "evt_01M15CRJ6RE1E1ZFKT9Y1PXNZK",
71
+ "kind": "event",
72
+ "owner": "workspace",
73
+ "parent": "trt_01KXG04GVS1W2103BQKJT7KZRZ",
74
+ "renames": []
75
+ },
67
76
  "orb_01KXG04GVS05DXYNB5ZR3H2X72": {
68
77
  "bakedName": "ModalRecordOrbital",
69
78
  "curName": "ModalRecordOrbital",
@@ -124,6 +133,18 @@
124
133
  "pending"
125
134
  ]
126
135
  },
136
+ {
137
+ "default": {},
138
+ "description": "The row an edit-mode OPEN pre-fills from when its payload carries no row. Stashed by SEED — hosts route the surface's loaded event here (e.g. a document look's RecordItemLoaded) so scalar-only action events ({ id }) can still open a fully seeded settings form.",
139
+ "intrinsic": true,
140
+ "name": "seedRow",
141
+ "relation": {
142
+ "cardinality": "one",
143
+ "entity": "ModalRecord",
144
+ "entityId": "ent_01KXG04GVS68RDSK2NDK0G2TT5"
145
+ },
146
+ "type": "relation"
147
+ },
127
148
  {
128
149
  "name": "createdAt",
129
150
  "type": "string"
@@ -291,7 +312,9 @@
291
312
  }
292
313
  ],
293
314
  "entityContract": {
294
- "provides": [],
315
+ "provides": [
316
+ "seedRow"
317
+ ],
295
318
  "requires": []
296
319
  },
297
320
  "entityRebindable": true,
@@ -310,6 +333,20 @@
310
333
  "key": "INIT",
311
334
  "name": "Initialize"
312
335
  },
336
+ {
337
+ "description": "Stash the row an edit-mode OPEN will pre-fill from. Hosts route the owning surface's loaded event here (e.g. RecordItemLoaded from a document look) so an OPEN carrying only { id } still opens a fully seeded form.",
338
+ "id": "evt_01M15CRJ6RE1E1ZFKT9Y1PXNZK",
339
+ "key": "SEED",
340
+ "name": "Seed",
341
+ "payloadSchema": [
342
+ {
343
+ "name": "row",
344
+ "type": "ModalRecord"
345
+ }
346
+ ],
347
+ "synonyms": "preload row, stash record, seed form, prefill",
348
+ "tier": "domain"
349
+ },
313
350
  {
314
351
  "description": "A request to display the modal window.",
315
352
  "id": "evt_01KXG04GVS6WNYYGFS0H53BHKC",
@@ -412,6 +449,23 @@
412
449
  "from": "closed",
413
450
  "to": "closed"
414
451
  },
452
+ {
453
+ "effects": [
454
+ [
455
+ "set",
456
+ "@entity.seedRow",
457
+ [
458
+ "object/merge",
459
+ "@payload.row",
460
+ {}
461
+ ]
462
+ ]
463
+ ],
464
+ "event": "SEED",
465
+ "eventId": "evt_01M15CRJ6RE1E1ZFKT9Y1PXNZK",
466
+ "from": "closed",
467
+ "to": "closed"
468
+ },
415
469
  {
416
470
  "effects": [
417
471
  [
@@ -445,7 +499,15 @@
445
499
  },
446
500
  {
447
501
  "cancelEvent": "CLOSE",
448
- "entity": "@payload.row",
502
+ "entity": [
503
+ "object/merge",
504
+ "@entity.seedRow",
505
+ [
506
+ "object/merge",
507
+ "@payload.row",
508
+ {}
509
+ ]
510
+ ],
449
511
  "fieldOverrides": "@config.fieldOverrides",
450
512
  "fields": "@config.fields",
451
513
  "mode": "@config.mode",
@@ -469,8 +531,38 @@
469
531
  "@config.mode",
470
532
  "create"
471
533
  ],
472
- "@payload.row"
534
+ "@payload.row",
535
+ [
536
+ "!=",
537
+ [
538
+ "str/default",
539
+ [
540
+ "object/get",
541
+ "@entity.seedRow",
542
+ "id"
543
+ ],
544
+ ""
545
+ ],
546
+ ""
547
+ ]
548
+ ],
549
+ "to": "open"
550
+ },
551
+ {
552
+ "effects": [
553
+ [
554
+ "set",
555
+ "@entity.seedRow",
556
+ [
557
+ "object/merge",
558
+ "@payload.row",
559
+ {}
560
+ ]
561
+ ]
473
562
  ],
563
+ "event": "SEED",
564
+ "eventId": "evt_01M15CRJ6RE1E1ZFKT9Y1PXNZK",
565
+ "from": "open",
474
566
  "to": "open"
475
567
  },
476
568
  {
@@ -285,7 +285,7 @@
285
285
  },
286
286
  {
287
287
  "default": {},
288
- "description": "The full row exactly as last fetched (relations hydrated when config.include asks). The document look binds it as the panel's entity and hands it to header actions as ?row, so a settings modal seeds from the real record instead of the atom's four mapped columns.",
288
+ "description": "The full row exactly as last fetched (relations hydrated when config.include asks). The details drawer binds it, and hosts that need it (e.g. a settings modal) stash it from RecordItemLoaded — the document panel itself takes only scalar props and emits scalar payloads ({ id, title }).",
289
289
  "intrinsic": true,
290
290
  "name": "loadedRow",
291
291
  "type": "object"
@@ -440,7 +440,7 @@
440
440
  "className": "w-full",
441
441
  "editEvent": "EDIT_CONTENT",
442
442
  "editLabel": "@config.editLabel",
443
- "entity": "@entity.loadedRow",
443
+ "id": "@entity.id",
444
444
  "maxInlineActions": "@config.maxInlineActions",
445
445
  "placeholder": "@config.placeholder",
446
446
  "subtitle": "@entity.description",
@@ -463,7 +463,7 @@
463
463
  "doneEvent": "DONE_EDITING",
464
464
  "doneLabel": "@config.doneLabel",
465
465
  "editing": true,
466
- "entity": "@entity.loadedRow",
466
+ "id": "@entity.id",
467
467
  "maxInlineActions": "@config.maxInlineActions",
468
468
  "placeholder": "@config.placeholder",
469
469
  "subtitle": "@entity.description",
@@ -19,15 +19,6 @@
19
19
  "parent": "trt_01M13ZXC5NZQG6MATNRKA9FPS0",
20
20
  "renames": []
21
21
  },
22
- "evt_01M13ZXC5N14ASYCGJ3EKEDMSQ": {
23
- "bakedName": "DocumentPanelLoaded",
24
- "curName": "DocumentPanelLoaded",
25
- "id": "evt_01M13ZXC5N14ASYCGJ3EKEDMSQ",
26
- "kind": "event",
27
- "owner": "workspace",
28
- "parent": "trt_01M13ZXC5NZQG6MATNRKA9FPS0",
29
- "renames": []
30
- },
31
22
  "evt_01M13ZXC5N2JWNJQNCQBM7ZV84": {
32
23
  "bakedName": "TITLE_COMMIT",
33
24
  "curName": "TITLE_COMMIT",
@@ -340,20 +331,6 @@
340
331
  ],
341
332
  "scope": "external",
342
333
  "tier": "essential"
343
- },
344
- {
345
- "description": "DocumentPanel rows finished loading; payload.data holds the collection.",
346
- "event": "DocumentPanelLoaded",
347
- "eventId": "evt_01M13ZXC5N14ASYCGJ3EKEDMSQ",
348
- "payloadSchema": [
349
- {
350
- "name": "data",
351
- "type": "[DocumentPanelItem]"
352
- }
353
- ],
354
- "scope": "internal",
355
- "synonyms": "loaded, fetched, retrieved",
356
- "tier": "essential"
357
334
  }
358
335
  ],
359
336
  "entityContract": {
@@ -379,20 +356,6 @@
379
356
  "key": "INIT",
380
357
  "name": "Initialize"
381
358
  },
382
- {
383
- "description": "DocumentPanel rows finished loading; payload.data holds the collection.",
384
- "id": "evt_01M13ZXC5N14ASYCGJ3EKEDMSQ",
385
- "key": "DocumentPanelLoaded",
386
- "name": "Document panel loaded",
387
- "payloadSchema": [
388
- {
389
- "name": "data",
390
- "type": "[DocumentPanelItem]"
391
- }
392
- ],
393
- "synonyms": "loaded, fetched, retrieved",
394
- "tier": "essential"
395
- },
396
359
  {
397
360
  "id": "evt_01M13ZXC5N2JWNJQNCQBM7ZV84",
398
361
  "key": "TITLE_COMMIT",
@@ -493,15 +456,6 @@
493
456
  "transitions": [
494
457
  {
495
458
  "effects": [
496
- [
497
- "fetch",
498
- "DocumentPanelItem",
499
- {
500
- "emit": {
501
- "success": "DocumentPanelLoaded"
502
- }
503
- }
504
- ],
505
459
  [
506
460
  "set",
507
461
  "@entity.title",
@@ -525,7 +479,6 @@
525
479
  "editEvent": "@config.editEvent",
526
480
  "editLabel": "@config.editLabel",
527
481
  "editing": "@config.editing",
528
- "entity": "@entity",
529
482
  "maxInlineActions": "@config.maxInlineActions",
530
483
  "placeholder": "@config.placeholder",
531
484
  "subtitle": "@config.subtitle",
@@ -541,37 +494,6 @@
541
494
  "from": "idle",
542
495
  "to": "idle"
543
496
  },
544
- {
545
- "effects": [
546
- [
547
- "render-ui",
548
- "main",
549
- {
550
- "actions": "@config.actions",
551
- "autosaveHint": "@config.autosaveHint",
552
- "className": "@config.className",
553
- "contentChangeEvent": "@config.contentChangeEvent",
554
- "doneEvent": "@config.doneEvent",
555
- "doneLabel": "@config.doneLabel",
556
- "editEvent": "@config.editEvent",
557
- "editLabel": "@config.editLabel",
558
- "editing": "@config.editing",
559
- "entity": "@payload.data",
560
- "maxInlineActions": "@config.maxInlineActions",
561
- "placeholder": "@config.placeholder",
562
- "subtitle": "@config.subtitle",
563
- "title": "@entity.title",
564
- "titleCommitEvent": "@config.titleCommitEvent",
565
- "type": "document-panel",
566
- "value": "@entity.value"
567
- }
568
- ]
569
- ],
570
- "event": "DocumentPanelLoaded",
571
- "eventId": "evt_01M13ZXC5N14ASYCGJ3EKEDMSQ",
572
- "from": "idle",
573
- "to": "idle"
574
- },
575
497
  {
576
498
  "effects": [
577
499
  [
@@ -592,7 +514,6 @@
592
514
  "editEvent": "@config.editEvent",
593
515
  "editLabel": "@config.editLabel",
594
516
  "editing": "@config.editing",
595
- "entity": "@entity",
596
517
  "maxInlineActions": "@config.maxInlineActions",
597
518
  "placeholder": "@config.placeholder",
598
519
  "subtitle": "@config.subtitle",
@@ -628,7 +549,6 @@
628
549
  "editEvent": "@config.editEvent",
629
550
  "editLabel": "@config.editLabel",
630
551
  "editing": "@config.editing",
631
- "entity": "@entity",
632
552
  "maxInlineActions": "@config.maxInlineActions",
633
553
  "placeholder": "@config.placeholder",
634
554
  "subtitle": "@config.subtitle",