@platecms/delta-vue 1.7.0 → 1.8.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.
@@ -21,7 +21,7 @@ export type Scalars = {
21
21
  DateTime: { input: any; output: any; }
22
22
  /** The `JSON` scalar type represents JSON values as specified by [ECMA-404](https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf). */
23
23
  JSON: { input: any; output: any; }
24
- /** A string representing the PRN object. Must match '^prn(:[A-Za-z0-9-_]+){5}$'. */
24
+ /** PRN identifier as a string */
25
25
  PRN: { input: any; output: any; }
26
26
  /** A generic Primitive value. */
27
27
  PrimitiveValue: { input: any; output: any; }
@@ -55,6 +55,7 @@ export type ApiToken = Subject & {
55
55
  createdAt: Scalars['DateTime']['output'];
56
56
  id: Scalars['String']['output'];
57
57
  name: Scalars['String']['output'];
58
+ organization?: Maybe<Organization>;
58
59
  prn: Scalars['PRN']['output'];
59
60
  roleAssignment: RoleAssignment;
60
61
  stage: Stage;
@@ -70,6 +71,7 @@ export type Asset = {
70
71
  /** The size of the file in bytes. */
71
72
  fileSize: Scalars['Int']['output'];
72
73
  mimeType: Scalars['String']['output'];
74
+ organization?: Maybe<Organization>;
73
75
  prn: Scalars['PRN']['output'];
74
76
  /** Generate urls for processed assets, only relevant for images. Is null if the Asset is not uploaded yet. */
75
77
  processedUrls?: Maybe<Array<Scalars['String']['output']>>;
@@ -86,13 +88,14 @@ export type AssetProcessedUrlsArgs = {
86
88
  export type Blueprint = {
87
89
  __typename?: 'Blueprint';
88
90
  channel: Channel;
89
- /** The ID of the Channel this Blueprint belongs to. */
90
- channelId?: Maybe<Scalars['String']['output']>;
91
+ /** The PRN of the Channel this Blueprint belongs to. */
92
+ channelPrn?: Maybe<Scalars['PRN']['output']>;
91
93
  createdAt: Scalars['DateTime']['output'];
92
94
  /** The Experience Component which defines this Blueprint. */
93
95
  definedBy: ExperienceComponent;
94
96
  isFixed: Scalars['Boolean']['output'];
95
97
  name: Scalars['String']['output'];
98
+ organization?: Maybe<Organization>;
96
99
  /** The preview image of the Blueprint. */
97
100
  preview?: Maybe<Asset>;
98
101
  prn: Scalars['PRN']['output'];
@@ -116,7 +119,7 @@ export type BlueprintsConnection = {
116
119
  /** The filter input type for 'Blueprints'. Objects/maps are treated as AND, while arrays are treated as OR. */
117
120
  export type BlueprintsFilterInput = {
118
121
  _not?: InputMaybe<Array<BlueprintsFilterInput>>;
119
- channelId?: InputMaybe<Array<StringFilter>>;
122
+ channelPrn?: InputMaybe<Array<PrnFilter>>;
120
123
  createdAt?: InputMaybe<Array<DateFilter>>;
121
124
  isFixed?: InputMaybe<Array<BooleanFilter>>;
122
125
  name?: InputMaybe<Array<StringFilter>>;
@@ -141,9 +144,14 @@ export type BuildingBlock = {
141
144
  createdAt: Scalars['DateTime']['output'];
142
145
  experienceComponents: Array<ExperienceComponent>;
143
146
  gridDefinition?: Maybe<GridDefinition>;
147
+ /** The successor in manual sort order for Building Blocks of the same Theme and Organization. Null if this is the last. */
144
148
  next?: Maybe<BuildingBlock>;
149
+ organization?: Maybe<Organization>;
150
+ /** The position of the Building Block in manual sort order within the same Theme and Organization. This uses Fractional Indexing and can be lexicographically sorted. */
151
+ position: Scalars['String']['output'];
145
152
  /** The preview image of the Building Block. */
146
153
  preview?: Maybe<Asset>;
154
+ /** The predecessor in manual sort order for Building Blocks of the same Theme and Organization. Null if this is the first. */
147
155
  previous?: Maybe<BuildingBlock>;
148
156
  prn: Scalars['PRN']['output'];
149
157
  slug: Scalars['String']['output'];
@@ -168,7 +176,12 @@ export type BuildingBlockField = {
168
176
  /** Validation rules that apply to this building block field. */
169
177
  contentValidationRules: Array<ContentValidationRule>;
170
178
  createdAt: Scalars['DateTime']['output'];
179
+ /** The successor in manual sort order for fields of the same Building Block and Organization. Null if this is the last. */
171
180
  next?: Maybe<BuildingBlockField>;
181
+ organization?: Maybe<Organization>;
182
+ /** The position of the Building Block Field in manual sort order within the same Building Block and Organization. This uses Fractional Indexing and can be lexicographically sorted. */
183
+ position: Scalars['String']['output'];
184
+ /** The predecessor in manual sort order for fields of the same Building Block and Organization. Null if this is the first. */
172
185
  previous?: Maybe<BuildingBlockField>;
173
186
  prn: Scalars['PRN']['output'];
174
187
  slug: Scalars['String']['output'];
@@ -197,7 +210,12 @@ export type BuildingBlockFieldFulfillment = {
197
210
  contentValue: ContentValue;
198
211
  createdAt: Scalars['DateTime']['output'];
199
212
  experienceComponent: ExperienceComponent;
213
+ /** The successor in manual sort order for fulfillments of the same Building Block Field within the same Experience Component, Organization, and Stage. Null if this is the last. */
200
214
  next?: Maybe<BuildingBlockFieldFulfillment>;
215
+ organization?: Maybe<Organization>;
216
+ /** The position of the Building Block Field Fulfillment in manual sort order within the same Building Block Field, Experience Component, Organization, and Stage. This uses Fractional Indexing and can be lexicographically sorted. */
217
+ position: Scalars['String']['output'];
218
+ /** The predecessor in manual sort order for fulfillments of the same Building Block Field within the same Experience Component, Organization, and Stage. Null if this is the first. */
201
219
  previous?: Maybe<BuildingBlockFieldFulfillment>;
202
220
  prn: Scalars['PRN']['output'];
203
221
  stage: Stage;
@@ -301,6 +319,7 @@ export type Channel = {
301
319
  defaultBlueprint?: Maybe<Blueprint>;
302
320
  domain: Scalars['String']['output'];
303
321
  name: Scalars['String']['output'];
322
+ organization?: Maybe<Organization>;
304
323
  pathParts: Array<PathPart>;
305
324
  prn: Scalars['PRN']['output'];
306
325
  rootPathPart: PathPart;
@@ -353,28 +372,25 @@ export type Content = {
353
372
 
354
373
  export type ContentExperience = {
355
374
  __typename?: 'ContentExperience';
356
- /** The ID of the Channel this ContentExperience belongs to. */
357
- channelId?: Maybe<Scalars['String']['output']>;
375
+ /** The PRN of the Channel this ContentExperience belongs to. */
376
+ channelPrn?: Maybe<Scalars['PRN']['output']>;
358
377
  createdAt: Scalars['DateTime']['output'];
359
378
  experienceComponent: ExperienceComponent;
360
379
  /** The issues that this Content Experience is a subject of */
361
380
  issues: Array<Issue>;
381
+ organization?: Maybe<Organization>;
362
382
  pathPart: PathPart;
363
- /** An array of path part ids from the current path part up to the root, ordered from root to current. */
364
- pathPartsToRootIds: Array<Scalars['String']['output']>;
383
+ /** An array of path part PRNs from the root PathPart to the current PathPart. */
384
+ pathPartsToRootPrns: Array<Scalars['String']['output']>;
365
385
  /** The preview image of the Content Experience. */
366
386
  preview?: Maybe<Asset>;
367
387
  primaryContentItem?: Maybe<ContentItem>;
368
388
  prn: Scalars['PRN']['output'];
369
- /** The Content Values that use this Content Experience as an referenced value. Reverse relation of referencedContentExperiences. */
370
- referencedBySmartTextContentValues: Array<ContentValue>;
371
389
  seoDescription?: Maybe<Scalars['String']['output']>;
372
390
  seoTitle?: Maybe<Scalars['String']['output']>;
373
391
  slug: Scalars['String']['output'];
374
392
  stage: Stage;
375
- /** The ids of the tags this Content Experience are tagged with, including all ancestor tags. Should only be used for filtering. */
376
- tagIds: Array<Scalars['String']['output']>;
377
- /** The tags this Content Experience are tagged with. */
393
+ /** The Tags assigned to this Content Experience. */
378
394
  tags: Array<Tag>;
379
395
  title: Scalars['String']['output'];
380
396
  updatedAt: Scalars['DateTime']['output'];
@@ -385,6 +401,11 @@ export type ContentExperienceIssuesArgs = {
385
401
  where?: InputMaybe<Array<IssuesFilterInput>>;
386
402
  };
387
403
 
404
+
405
+ export type ContentExperiencePathPartArgs = {
406
+ where?: InputMaybe<Array<PathPartsFilterInput>>;
407
+ };
408
+
388
409
  export type ContentExperienceEdge = {
389
410
  __typename?: 'ContentExperienceEdge';
390
411
  cursor: Scalars['String']['output'];
@@ -401,13 +422,13 @@ export type ContentExperiencesConnection = {
401
422
  /** The filter input type for 'ContentExperiences'. Objects/maps are treated as AND, while arrays are treated as OR. */
402
423
  export type ContentExperiencesFilterInput = {
403
424
  _not?: InputMaybe<Array<ContentExperiencesFilterInput>>;
404
- channelId?: InputMaybe<Array<StringFilter>>;
425
+ channelPrn?: InputMaybe<Array<PrnFilter>>;
405
426
  createdAt?: InputMaybe<Array<DateFilter>>;
406
427
  prn?: InputMaybe<Array<PrnFilter>>;
407
428
  seoDescription?: InputMaybe<Array<StringFilter>>;
408
429
  seoTitle?: InputMaybe<Array<StringFilter>>;
409
430
  slug?: InputMaybe<Array<StringFilter>>;
410
- tagIds?: InputMaybe<Array<StringArrayFilter>>;
431
+ tagPrns?: InputMaybe<Array<PrnArrayFilter>>;
411
432
  title?: InputMaybe<Array<StringFilter>>;
412
433
  updatedAt?: InputMaybe<Array<DateFilter>>;
413
434
  };
@@ -420,7 +441,12 @@ export type ContentField = {
420
441
  contentValues: Array<ContentValue>;
421
442
  createdAt: Scalars['DateTime']['output'];
422
443
  name: Scalars['String']['output'];
444
+ /** The successor in manual sort order for Content Fields of the same Content Type and Organization. Null if this is the last. */
423
445
  next?: Maybe<ContentField>;
446
+ organization?: Maybe<Organization>;
447
+ /** The position of the Content Field in manual sort order within the same Content Type and Organization. This uses Fractional Indexing and can be lexicographically sorted. */
448
+ position: Scalars['String']['output'];
449
+ /** The predecessor in manual sort order for Content Fields of the same Content Type and Organization. Null if this is the first. */
424
450
  previous?: Maybe<ContentField>;
425
451
  prn: Scalars['PRN']['output'];
426
452
  slug: Scalars['String']['output'];
@@ -463,9 +489,9 @@ export type ContentFieldsFilterInput = {
463
489
  export type ContentItem = {
464
490
  __typename?: 'ContentItem';
465
491
  contentType: ContentType;
466
- /** The id of the Content Type this Content Item belongs to. This is computed from the contentType relation. */
467
- contentTypeId: Scalars['String']['output'];
468
- /** The slug of the Content Type this Content Item belongs to. This is computed from the contentType relation. */
492
+ /** The PRN of the Content Type this Content Item belongs to. */
493
+ contentTypePrn: Scalars['PRN']['output'];
494
+ /** The slug of the Content Type this Content Item belongs to. */
469
495
  contentTypeSlug: Scalars['String']['output'];
470
496
  contentValues: Array<ContentValue>;
471
497
  createdAt: Scalars['DateTime']['output'];
@@ -476,13 +502,12 @@ export type ContentItem = {
476
502
  isDraft: Scalars['Boolean']['output'];
477
503
  /** The issues that this Content Item is a subject of */
478
504
  issues: Array<Issue>;
505
+ organization?: Maybe<Organization>;
479
506
  primaryContentExperience?: Maybe<ContentExperience>;
480
507
  prn: Scalars['PRN']['output'];
481
508
  relatingContentValues: Array<ContentValue>;
482
509
  stage: Stage;
483
- /** The ids of the tags this Content Item are tagged with, including all ancestor tags. Should only be used for filtering. */
484
- tagIds: Array<Scalars['String']['output']>;
485
- /** The tags this Content Item are tagged with. */
510
+ /** The Tags assigned to this Content Item. */
486
511
  tags: Array<Tag>;
487
512
  updatedAt: Scalars['DateTime']['output'];
488
513
  };
@@ -518,13 +543,13 @@ export type ContentItemsConnection = {
518
543
  /** The filter input type for 'ContentItems'. Objects/maps are treated as AND, while arrays are treated as OR. */
519
544
  export type ContentItemsFilterInput = {
520
545
  _not?: InputMaybe<Array<ContentItemsFilterInput>>;
521
- contentTypeId?: InputMaybe<Array<StringFilter>>;
546
+ contentTypePrn?: InputMaybe<Array<PrnFilter>>;
522
547
  contentTypeSlug?: InputMaybe<Array<StringFilter>>;
523
548
  createdAt?: InputMaybe<Array<DateFilter>>;
524
549
  displayName?: InputMaybe<Array<StringFilter>>;
525
550
  isDraft?: InputMaybe<Array<BooleanFilter>>;
526
551
  prn?: InputMaybe<Array<PrnFilter>>;
527
- tagIds?: InputMaybe<Array<StringArrayFilter>>;
552
+ tagPrns?: InputMaybe<Array<PrnArrayFilter>>;
528
553
  updatedAt?: InputMaybe<Array<DateFilter>>;
529
554
  };
530
555
 
@@ -538,6 +563,7 @@ export type ContentType = {
538
563
  /** The display name template for the content type. Use {{contentFieldPrn}} to reference Content Fields. */
539
564
  displayNameTemplate: Scalars['String']['output'];
540
565
  name: Scalars['String']['output'];
566
+ organization?: Maybe<Organization>;
541
567
  prn: Scalars['PRN']['output'];
542
568
  slug: Scalars['String']['output'];
543
569
  updatedAt: Scalars['DateTime']['output'];
@@ -580,6 +606,7 @@ export type ContentTypesFilterInput = {
580
606
  export type ContentValidationRule = {
581
607
  __typename?: 'ContentValidationRule';
582
608
  createdAt: Scalars['DateTime']['output'];
609
+ organization?: Maybe<Organization>;
583
610
  prn: Scalars['PRN']['output'];
584
611
  ruleType: RuleType;
585
612
  settings: ExistingContentValidationRulesSettings;
@@ -599,8 +626,9 @@ export type ContentValue = {
599
626
  buildingBlockFieldFulfillments: Array<BuildingBlockFieldFulfillment>;
600
627
  contentField?: Maybe<ContentField>;
601
628
  contentItem?: Maybe<ContentItem>;
629
+ contentItemPrn?: Maybe<Scalars['PRN']['output']>;
602
630
  createdAt: Scalars['DateTime']['output'];
603
- /** Whether the ContentValue is structured in a Content Item. */
631
+ /** Whether the Content Value is structured in a Content Item. */
604
632
  hasContentItem: Scalars['Boolean']['output'];
605
633
  /** The CAST tree for the smart text with all Content Values interpolated. */
606
634
  interpolatedSmartText?: Maybe<Scalars['CAST']['output']>;
@@ -612,9 +640,14 @@ export type ContentValue = {
612
640
  linkedGridPlacement?: Maybe<GridPlacement>;
613
641
  linkedPathPart?: Maybe<PathPart>;
614
642
  linkedTag?: Maybe<Tag>;
643
+ /** The successor in manual sort order for Content Values with the same Content Item, Content Field, Organization, and Stage. Null if this is the last. */
615
644
  next?: Maybe<ContentValue>;
645
+ organization?: Maybe<Organization>;
616
646
  /** The plain text representation of the smart text. This is used internally. If you really need the plain text representation of CAST, use the castToPlainText utility function. */
617
647
  plainText?: Maybe<Scalars['String']['output']>;
648
+ /** The position of the Content Value in manual sort order within the same Content Item, Content Field, Organization, and Stage. This uses Fractional Indexing and can be lexicographically sorted. Null if the Content Value is not part of a Content Item. */
649
+ position?: Maybe<Scalars['String']['output']>;
650
+ /** The predecessor in manual sort order for Content Values with the same Content Item, Content Field, Organization, and Stage. Null if this is the first. */
618
651
  previous?: Maybe<ContentValue>;
619
652
  /** !!!Warning!!! The filter generated for this field is a hardcoded StringFilter. This means all primitiveValues will be converted to and compared as a string! */
620
653
  primitiveValue?: Maybe<Scalars['PrimitiveValue']['output']>;
@@ -641,7 +674,7 @@ export type ContentValue = {
641
674
  smartText?: Maybe<Scalars['CAST']['output']>;
642
675
  stage: Stage;
643
676
  updatedAt: Scalars['DateTime']['output'];
644
- /** The value type name of the Content Value. This is calculated based on the value that is in the Content Value. Filtered using a StringFilter. */
677
+ /** The value type name of the Content Value. Filtered using a StringFilter. */
645
678
  valueTypeName: ContentValueTypeNames;
646
679
  };
647
680
 
@@ -686,8 +719,8 @@ export type ContentValuesConnection = {
686
719
  /** The filter input type for 'ContentValues'. Objects/maps are treated as AND, while arrays are treated as OR. */
687
720
  export type ContentValuesFilterInput = {
688
721
  _not?: InputMaybe<Array<ContentValuesFilterInput>>;
722
+ contentItemPrn?: InputMaybe<Array<PrnFilter>>;
689
723
  createdAt?: InputMaybe<Array<DateFilter>>;
690
- hasContentItem?: InputMaybe<Array<BooleanFilter>>;
691
724
  isReusable?: InputMaybe<Array<BooleanFilter>>;
692
725
  plainText?: InputMaybe<Array<StringFilter>>;
693
726
  primitiveValue?: InputMaybe<Array<StringFilter>>;
@@ -749,6 +782,7 @@ export type CreateApiTokenResponse = Subject & {
749
782
  createdAt: Scalars['DateTime']['output'];
750
783
  id: Scalars['String']['output'];
751
784
  name: Scalars['String']['output'];
785
+ organization?: Maybe<Organization>;
752
786
  prn: Scalars['PRN']['output'];
753
787
  roleAssignment: RoleAssignment;
754
788
  stage: Stage;
@@ -766,14 +800,13 @@ export type CreateBlueprintFromContentExperienceInput = {
766
800
 
767
801
  export type CreateBlueprintInput = {
768
802
  channel: Scalars['PRN']['input'];
769
- initialRowCount?: Scalars['Int']['input'];
770
803
  isFixed: Scalars['Boolean']['input'];
771
804
  name: Scalars['String']['input'];
772
805
  preview?: InputMaybe<Scalars['PRN']['input']>;
773
806
  };
774
807
 
775
808
  export type CreateBuildingBlockFieldForBuildingBlockInput = {
776
- /** The PRN of the BuildingBlockField that this BuildingBlockField should manually be sorted after. Null means it should be the last. */
809
+ /** The PRN of the Building Block Field that should come immediately after this one in manual sort order within the same Building Block and Organization. Null appends to the end. */
777
810
  next?: InputMaybe<Scalars['PRN']['input']>;
778
811
  slug: Scalars['String']['input'];
779
812
  title: Scalars['String']['input'];
@@ -781,29 +814,29 @@ export type CreateBuildingBlockFieldForBuildingBlockInput = {
781
814
 
782
815
  export type CreateBuildingBlockFieldFulfillmentForExperienceComponentInput = {
783
816
  buildingBlockField: Scalars['PRN']['input'];
784
- /** The PRN of the Content Value which this BuildingBlockFieldFulfillment is filled by. */
817
+ /** The PRN of the Content Value which this Building Block Field Fulfillment is filled by. */
785
818
  contentValueToConnect?: InputMaybe<Scalars['PRN']['input']>;
786
- /** Create a new Content Value for this Building Block Field Fulfillment. Exactly one of contentValue or createContentValue must be provided. */
819
+ /** Create a new Content Value for this Building Block Field Fulfillment. Exactly one of contentValueToConnect and contentValueToCreate must be provided. */
787
820
  contentValueToCreate?: InputMaybe<CreateContentValueInput>;
788
- /** The PRN of the BuildingBlockFieldFulfillment that this BuildingBlockFieldFulfillment should manually be sorted after. Null means it should be the last. */
821
+ /** The PRN of the Building Block Field Fulfillment that should come immediately after this one in manual sort order within the same Experience Component, Building Block Field, Organization, and Stage. Null appends to the end. */
789
822
  next?: InputMaybe<Scalars['PRN']['input']>;
790
823
  };
791
824
 
792
825
  export type CreateBuildingBlockFieldFulfillmentInput = {
793
826
  buildingBlockField: Scalars['PRN']['input'];
794
- /** The PRN of the Content Value which this BuildingBlockFieldFulfillment is filled by. */
827
+ /** The PRN of the Content Value which this Building Block Field Fulfillment is filled by. */
795
828
  contentValueToConnect?: InputMaybe<Scalars['PRN']['input']>;
796
- /** Create a new Content Value for this Building Block Field Fulfillment. Exactly one of contentValue or createContentValue must be provided. */
829
+ /** Create a new Content Value for this Building Block Field Fulfillment. Exactly one of contentValueToConnect and contentValueToCreate must be provided. */
797
830
  contentValueToCreate?: InputMaybe<CreateContentValueInput>;
798
- /** The PRN of the Experience Component which this Building Block Field Fulfillment fulfills. */
831
+ /** The PRN of the Experience Component which this Building Block Field Fulfillment fulfills. */
799
832
  experienceComponent: Scalars['PRN']['input'];
800
- /** The PRN of the BuildingBlockFieldFulfillment that this BuildingBlockFieldFulfillment should manually be sorted after. Null means it should be the last. */
833
+ /** The PRN of the Building Block Field Fulfillment that should come immediately after this one in manual sort order within the same Experience Component, Building Block Field, Organization, and Stage. Null appends to the end. */
801
834
  next?: InputMaybe<Scalars['PRN']['input']>;
802
835
  };
803
836
 
804
837
  export type CreateBuildingBlockFieldInput = {
805
838
  buildingBlock: Scalars['PRN']['input'];
806
- /** The PRN of the BuildingBlockField that this BuildingBlockField should manually be sorted after. Null means it should be the last. */
839
+ /** The PRN of the Building Block Field that should come immediately after this one in manual sort order within the same Building Block and Organization. Null appends to the end. */
807
840
  next?: InputMaybe<Scalars['PRN']['input']>;
808
841
  slug: Scalars['String']['input'];
809
842
  title: Scalars['String']['input'];
@@ -812,7 +845,7 @@ export type CreateBuildingBlockFieldInput = {
812
845
  export type CreateBuildingBlockForThemeInput = {
813
846
  buildingBlockFields: Array<CreateBuildingBlockFieldForBuildingBlockInput>;
814
847
  gridDefinition?: InputMaybe<CreateGridDefinitionInput>;
815
- /** The PRN of the BuildingBlock that this BuildingBlock should manually be sorted after. Null means it should be the last. */
848
+ /** The PRN of the Building Block that should come immediately after this one in manual sort order within the same Theme and Organization. Null appends to the end. */
816
849
  next?: InputMaybe<Scalars['PRN']['input']>;
817
850
  preview?: InputMaybe<Scalars['PRN']['input']>;
818
851
  slug: Scalars['String']['input'];
@@ -822,7 +855,7 @@ export type CreateBuildingBlockForThemeInput = {
822
855
  export type CreateBuildingBlockInput = {
823
856
  buildingBlockFields: Array<CreateBuildingBlockFieldForBuildingBlockInput>;
824
857
  gridDefinition?: InputMaybe<CreateGridDefinitionInput>;
825
- /** The PRN of the BuildingBlock that this BuildingBlock should manually be sorted after. Null means it should be the last. */
858
+ /** The PRN of the Building Block that should come immediately after this one in manual sort order within the same Theme and Organization. Null appends to the end. */
826
859
  next?: InputMaybe<Scalars['PRN']['input']>;
827
860
  preview?: InputMaybe<Scalars['PRN']['input']>;
828
861
  slug: Scalars['String']['input'];
@@ -840,7 +873,6 @@ export type CreateChannelInput = {
840
873
  export type CreateContentExperienceWithExistingPathPartInput = {
841
874
  /** The PRN of the Blueprint to create a Content Experience from. If not provided, an empty Content Experience will be created. */
842
875
  fromBlueprint?: InputMaybe<Scalars['PRN']['input']>;
843
- initialRowCount?: InputMaybe<Scalars['Int']['input']>;
844
876
  pathPart: Scalars['PRN']['input'];
845
877
  preview?: InputMaybe<Scalars['PRN']['input']>;
846
878
  primaryContentItem?: InputMaybe<Scalars['PRN']['input']>;
@@ -858,7 +890,6 @@ export type CreateContentExperienceWithNewPathPartInput = {
858
890
  createPathPartFromPath?: InputMaybe<CreatePathPartFromPathInput>;
859
891
  /** The PRN of the Blueprint to create a Content Experience from. If not provided, an empty Content Experience will be created. */
860
892
  fromBlueprint?: InputMaybe<Scalars['PRN']['input']>;
861
- initialRowCount?: InputMaybe<Scalars['Int']['input']>;
862
893
  preview?: InputMaybe<Scalars['PRN']['input']>;
863
894
  primaryContentItem?: InputMaybe<Scalars['PRN']['input']>;
864
895
  /** The SEO description for the Content Experience. */
@@ -872,7 +903,7 @@ export type CreateContentExperienceWithNewPathPartInput = {
872
903
 
873
904
  export type CreateContentFieldForContentTypeInput = {
874
905
  name: Scalars['String']['input'];
875
- /** The PRN of the ContentField that this ContentField should manually be sorted after. Null means it should be the last. */
906
+ /** The PRN of the Content Field that should come immediately after this one in manual sort order within the same Content Type and Organization. Null appends to the end. */
876
907
  next?: InputMaybe<Scalars['PRN']['input']>;
877
908
  slug: Scalars['String']['input'];
878
909
  };
@@ -880,7 +911,7 @@ export type CreateContentFieldForContentTypeInput = {
880
911
  export type CreateContentFieldInput = {
881
912
  contentType: Scalars['PRN']['input'];
882
913
  name: Scalars['String']['input'];
883
- /** The PRN of the ContentField that this ContentField should manually be sorted after. Null means it should be the last. */
914
+ /** The PRN of the Content Field that should come immediately after this one in manual sort order within the same Content Type and Organization. Null appends to the end. */
884
915
  next?: InputMaybe<Scalars['PRN']['input']>;
885
916
  slug: Scalars['String']['input'];
886
917
  };
@@ -930,7 +961,7 @@ export type CreateContentValueInput = {
930
961
  linkedGridPlacement?: InputMaybe<Scalars['PRN']['input']>;
931
962
  linkedPathPart?: InputMaybe<Scalars['PRN']['input']>;
932
963
  linkedTag?: InputMaybe<Scalars['PRN']['input']>;
933
- /** The PRN of the ContentValue that this ContentValue should manually be sorted after. Null means it should be the last. */
964
+ /** The PRN of the Content Value that should come immediately after this one in manual sort order within the same Content Item, Content Field, Organization, and Stage. Null appends to the end. */
934
965
  next?: InputMaybe<Scalars['PRN']['input']>;
935
966
  /** !!!Warning!!! The filter generated for this field is a hardcoded StringFilter. This means all primitiveValues will be converted to and compared as a string! */
936
967
  primitiveValue?: InputMaybe<Scalars['PrimitiveValue']['input']>;
@@ -988,19 +1019,20 @@ export type CreateGridInput = {
988
1019
  /** !!!WARNING!!! This is currently not validated. Set this if you are creating a Grid for an existing Experience Component. Leave null if creating with an Experience Component. */
989
1020
  experienceComponent?: InputMaybe<Scalars['PRN']['input']>;
990
1021
  gridDefinition: Scalars['PRN']['input'];
991
- rows: Scalars['Int']['input'];
992
1022
  };
993
1023
 
994
1024
  export type CreateGridPlacementForExperienceComponentInput = {
995
1025
  grid: Scalars['PRN']['input'];
996
- row: Scalars['Int']['input'];
1026
+ /** The PRN of the Grid Placement that should come immediately after this one in manual sort order within the same Grid and Organization. Null appends to the end. */
1027
+ next?: InputMaybe<Scalars['PRN']['input']>;
997
1028
  };
998
1029
 
999
1030
  export type CreateGridPlacementInput = {
1000
1031
  /** The PRN of the Experience Component to place in this Grid Placement. */
1001
1032
  experienceComponent: Scalars['PRN']['input'];
1002
1033
  grid: Scalars['PRN']['input'];
1003
- row: Scalars['Int']['input'];
1034
+ /** The PRN of the Grid Placement that should come immediately after this one in manual sort order within the same Grid and Organization. Null appends to the end. */
1035
+ next?: InputMaybe<Scalars['PRN']['input']>;
1004
1036
  };
1005
1037
 
1006
1038
  export type CreateInvitationInput = {
@@ -1150,6 +1182,7 @@ export type ExperienceComponent = {
1150
1182
  isGlobal: Scalars['Boolean']['output'];
1151
1183
  /** The name of the Experience Component. Only applicable for global Experience Components. */
1152
1184
  name?: Maybe<Scalars['String']['output']>;
1185
+ organization?: Maybe<Organization>;
1153
1186
  /** The preview image of the Experience Component. */
1154
1187
  preview?: Maybe<Asset>;
1155
1188
  prn: Scalars['PRN']['output'];
@@ -1197,7 +1230,7 @@ export type ExperienceComponentsFilterInput = {
1197
1230
  };
1198
1231
 
1199
1232
  export type FindPathPartByPathInput = {
1200
- /** The Channel of the new Path Part. */
1233
+ /** The Channel of the Path Part. */
1201
1234
  channel: Scalars['PRN']['input'];
1202
1235
  /** The path of the Path Part. Must contain a leading '/'. */
1203
1236
  path: Scalars['String']['input'];
@@ -1244,8 +1277,8 @@ export type Grid = {
1244
1277
  experienceComponent: ExperienceComponent;
1245
1278
  gridDefinition: GridDefinition;
1246
1279
  gridPlacements: Array<GridPlacement>;
1280
+ organization?: Maybe<Organization>;
1247
1281
  prn: Scalars['PRN']['output'];
1248
- rows: Scalars['Int']['output'];
1249
1282
  stage: Stage;
1250
1283
  updatedAt: Scalars['DateTime']['output'];
1251
1284
  };
@@ -1264,7 +1297,9 @@ export type GridDefinition = {
1264
1297
  __typename?: 'GridDefinition';
1265
1298
  buildingBlock: BuildingBlock;
1266
1299
  createdAt: Scalars['DateTime']['output'];
1300
+ grids: Array<Grid>;
1267
1301
  maxRows: Scalars['Int']['output'];
1302
+ organization?: Maybe<Organization>;
1268
1303
  prn: Scalars['PRN']['output'];
1269
1304
  updatedAt: Scalars['DateTime']['output'];
1270
1305
  };
@@ -1278,10 +1313,14 @@ export type GridPlacement = {
1278
1313
  createdAt: Scalars['DateTime']['output'];
1279
1314
  experienceComponent: ExperienceComponent;
1280
1315
  grid: Grid;
1316
+ /** The successor in manual sort order for placements of the same Grid, Organization, and Stage. Null if this is the last. */
1317
+ next?: Maybe<GridPlacement>;
1318
+ organization?: Maybe<Organization>;
1319
+ /** The position of the Grid Placement in manual sort order within the same Grid, Experience Component, Organization, and Stage. This uses Fractional Indexing and can be lexicographically sorted. */
1320
+ position: Scalars['String']['output'];
1321
+ /** The predecessor in manual sort order for placements of the same Grid, Organization, and Stage. Null if this is the first. */
1322
+ previous?: Maybe<GridPlacement>;
1281
1323
  prn: Scalars['PRN']['output'];
1282
- /** The Content Values that use this Grid Placement as an referenced value. Reverse relation of referencedGridPlacements. */
1283
- referencedBySmartTextContentValues: Array<ContentValue>;
1284
- row: Scalars['Int']['output'];
1285
1324
  stage: Stage;
1286
1325
  updatedAt: Scalars['DateTime']['output'];
1287
1326
  };
@@ -1309,7 +1348,6 @@ export type GridPlacementsFilterInput = {
1309
1348
  _not?: InputMaybe<Array<GridPlacementsFilterInput>>;
1310
1349
  createdAt?: InputMaybe<Array<DateFilter>>;
1311
1350
  prn?: InputMaybe<Array<PrnFilter>>;
1312
- row?: InputMaybe<Array<IntFilter>>;
1313
1351
  updatedAt?: InputMaybe<Array<DateFilter>>;
1314
1352
  };
1315
1353
 
@@ -1318,7 +1356,6 @@ export type GridsFilterInput = {
1318
1356
  _not?: InputMaybe<Array<GridsFilterInput>>;
1319
1357
  createdAt?: InputMaybe<Array<DateFilter>>;
1320
1358
  prn?: InputMaybe<Array<PrnFilter>>;
1321
- rows?: InputMaybe<Array<IntFilter>>;
1322
1359
  updatedAt?: InputMaybe<Array<DateFilter>>;
1323
1360
  };
1324
1361
 
@@ -1359,6 +1396,7 @@ export type InterpolatedContentValue = {
1359
1396
  export type Invitation = {
1360
1397
  __typename?: 'Invitation';
1361
1398
  createdAt: Scalars['DateTime']['output'];
1399
+ organization?: Maybe<Organization>;
1362
1400
  prn: Scalars['PRN']['output'];
1363
1401
  role: Role;
1364
1402
  updatedAt: Scalars['DateTime']['output'];
@@ -1370,6 +1408,7 @@ export type Issue = {
1370
1408
  context: IssueContext;
1371
1409
  createdAt: Scalars['DateTime']['output'];
1372
1410
  lastSeenAt: Scalars['DateTime']['output'];
1411
+ organization?: Maybe<Organization>;
1373
1412
  prn: Scalars['PRN']['output'];
1374
1413
  stage: Stage;
1375
1414
  status: IssueStatus;
@@ -1444,6 +1483,8 @@ export type Mutation = {
1444
1483
  addPlateMaintainer: User;
1445
1484
  /** Archives one or many Issues. Throws NotFoundError when no Issues could be found. */
1446
1485
  archiveIssues: Array<Issue>;
1486
+ /** Bootstrap the first PlateMaintainer on a fresh deployment using a shared secret. */
1487
+ bootstrapPlateMaintainer: Scalars['Boolean']['output'];
1447
1488
  /** Set the image hash for an asset in the Platform Service database. */
1448
1489
  casAnalyzeAsset: SuccessResponse;
1449
1490
  /** Confirm an Asset upload. Unconfirmed Assets are deleted. */
@@ -1508,7 +1549,6 @@ export type Mutation = {
1508
1549
  createGridDefinition: Array<GridDefinition>;
1509
1550
  /**
1510
1551
  * Creates a new Grid Placement.
1511
- * Moves Grid Placements below the new Grid Placement down by one.
1512
1552
  * Throws BadRequestException when no Experience Component PRN is given.
1513
1553
  */
1514
1554
  createGridPlacement: Array<GridPlacement>;
@@ -1576,7 +1616,9 @@ export type Mutation = {
1576
1616
  removeBuildingBlockFieldFulfillment: Array<BuildingBlockFieldFulfillment>;
1577
1617
  /**
1578
1618
  * Removes one or many Channels.
1579
- * Throws NotFoundException when no Channels could be found.
1619
+ * Throws NotFoundException when no Channel could be found.
1620
+ * Throws UnprocessableContentError when force is false and the Channel still has Blueprints.
1621
+ * Throws UnprocessableContentError when force is false and any Path Part has a Content Experience.
1580
1622
  */
1581
1623
  removeChannel: Array<Channel>;
1582
1624
  /**
@@ -1737,11 +1779,6 @@ export type Mutation = {
1737
1779
  * Throws NotFoundException when no ExperienceComponent could be found.
1738
1780
  */
1739
1781
  updateExperienceComponent: Array<ExperienceComponent>;
1740
- /**
1741
- * Updates one or many Grid with new values.
1742
- * Throws NotFoundException when no Grid could be found.
1743
- */
1744
- updateGrid: Array<Grid>;
1745
1782
  /**
1746
1783
  * Updates one or many GridDefinitions with new values.
1747
1784
  * Throws NotFoundException when no GridDefinition could be found.
@@ -1749,7 +1786,6 @@ export type Mutation = {
1749
1786
  updateGridDefinition: Array<GridDefinition>;
1750
1787
  /**
1751
1788
  * Updates a Grid Placement with new values.
1752
- * Updates the Grid Placements between the old row and the new row to move accordingly.
1753
1789
  * Throws NotFoundException when no Grid Placement could be found.
1754
1790
  */
1755
1791
  updateGridPlacement: Array<GridPlacement>;
@@ -1800,6 +1836,11 @@ export type MutationArchiveIssuesArgs = {
1800
1836
  };
1801
1837
 
1802
1838
 
1839
+ export type MutationBootstrapPlateMaintainerArgs = {
1840
+ secret: Scalars['String']['input'];
1841
+ };
1842
+
1843
+
1803
1844
  export type MutationCasAnalyzeAssetArgs = {
1804
1845
  assetPrnString: Scalars['String']['input'];
1805
1846
  };
@@ -2041,7 +2082,7 @@ export type MutationRemoveBuildingBlockFieldFulfillmentArgs = {
2041
2082
 
2042
2083
 
2043
2084
  export type MutationRemoveChannelArgs = {
2044
- prn: Array<Scalars['PRN']['input']>;
2085
+ input: Array<RemoveChannelInput>;
2045
2086
  };
2046
2087
 
2047
2088
 
@@ -2236,11 +2277,6 @@ export type MutationUpdateExperienceComponentArgs = {
2236
2277
  };
2237
2278
 
2238
2279
 
2239
- export type MutationUpdateGridArgs = {
2240
- input: Array<UpdateGridInput>;
2241
- };
2242
-
2243
-
2244
2280
  export type MutationUpdateGridDefinitionArgs = {
2245
2281
  input: Array<UpdateGridDefinitionInput>;
2246
2282
  };
@@ -2369,17 +2405,18 @@ export type PathPart = {
2369
2405
  amountOfDescendantsWithContentExperiences: Scalars['Int']['output'];
2370
2406
  /** All Path Parts in a "family" (ancestors and decendents) are connected to the same Channel. This does not make sense semantically, but makes it much easier to access the Channel from any Path Part. */
2371
2407
  channel: Channel;
2372
- /** The ID of the Channel this PathPart belongs to. */
2373
- channelId?: Maybe<Scalars['String']['output']>;
2408
+ /** The PRN of the Channel this PathPart belongs to. */
2409
+ channelPrn: Scalars['PRN']['output'];
2374
2410
  children: Array<PathPart>;
2375
2411
  contentExperience?: Maybe<ContentExperience>;
2412
+ contentExperiencePrn?: Maybe<Scalars['PRN']['output']>;
2376
2413
  createdAt: Scalars['DateTime']['output'];
2377
2414
  /** Whether this Path Part has a Content Experience. */
2378
2415
  hasContentExperience: Scalars['Boolean']['output'];
2416
+ organization?: Maybe<Organization>;
2379
2417
  /** The parent Path Part. Only null when this is the root PathPart. */
2380
2418
  parent?: Maybe<PathPart>;
2381
- /** The ID of the parent Path Part. Only null when this is the root PathPart. */
2382
- parentId?: Maybe<Scalars['String']['output']>;
2419
+ parentPrn?: Maybe<Scalars['PRN']['output']>;
2383
2420
  /** The full path of this Path Part, starting from the root. */
2384
2421
  path: Scalars['String']['output'];
2385
2422
  prn: Scalars['PRN']['output'];
@@ -2414,10 +2451,10 @@ export type PathPartsFilterInput = {
2414
2451
  amountOfChildrenWithContentExperiences?: InputMaybe<Array<IntFilter>>;
2415
2452
  amountOfDescendants?: InputMaybe<Array<IntFilter>>;
2416
2453
  amountOfDescendantsWithContentExperiences?: InputMaybe<Array<IntFilter>>;
2417
- channelId?: InputMaybe<Array<StringFilter>>;
2454
+ channelPrn?: InputMaybe<Array<PrnFilter>>;
2455
+ contentExperiencePrn?: InputMaybe<Array<PrnFilter>>;
2418
2456
  createdAt?: InputMaybe<Array<DateFilter>>;
2419
- hasContentExperience?: InputMaybe<Array<BooleanFilter>>;
2420
- parentId?: InputMaybe<Array<StringFilter>>;
2457
+ parentPrn?: InputMaybe<Array<PrnFilter>>;
2421
2458
  path?: InputMaybe<Array<StringFilter>>;
2422
2459
  prn?: InputMaybe<Array<PrnFilter>>;
2423
2460
  slug?: InputMaybe<Array<StringFilter>>;
@@ -2429,6 +2466,17 @@ export type PatternFlag = {
2429
2466
  name: Scalars['String']['input'];
2430
2467
  };
2431
2468
 
2469
+ export type PrnArrayFilter = {
2470
+ /** Contains */
2471
+ _contains?: InputMaybe<Array<Scalars['PRN']['input']>>;
2472
+ /** Equals (values match exactly) */
2473
+ _eq?: InputMaybe<Array<Scalars['PRN']['input']>>;
2474
+ /** Not equals (values do not match exactly) */
2475
+ _neq?: InputMaybe<Array<Scalars['PRN']['input']>>;
2476
+ /** Not contains */
2477
+ _not_contains?: InputMaybe<Array<Scalars['PRN']['input']>>;
2478
+ };
2479
+
2432
2480
  export type PrnFilter = {
2433
2481
  /** Equals */
2434
2482
  _eq?: InputMaybe<Scalars['PRN']['input']>;
@@ -2481,6 +2529,8 @@ export type Query = {
2481
2529
  buildingBlockFieldFulfillments: BuildingBlockFieldFulfillmentsConnection;
2482
2530
  /** Orders and paginates all BuildingBlockFields. */
2483
2531
  buildingBlockFields: BuildingBlockFieldsConnection;
2532
+ /** True when no Plate maintainers exist yet and bootstrap is allowed. */
2533
+ canBootstrapMaintainer: Scalars['Boolean']['output'];
2484
2534
  /** Detect CAST matches with database reusable entries and return an array with the suggestions, Ordered by occurrence in the text. Matches are based on plaintext. */
2485
2535
  castSuggestions: Array<CastSuggestion>;
2486
2536
  /** Detect CAST matches with database reusable entries and return the CAST with suggestions inserted. Matches are based on plaintext. */
@@ -2885,13 +2935,14 @@ export enum RemoveBlueprintInstanceMode {
2885
2935
  export type RemoveBlueprintResponse = {
2886
2936
  __typename?: 'RemoveBlueprintResponse';
2887
2937
  channel: Channel;
2888
- /** The ID of the Channel this Blueprint belongs to. */
2889
- channelId?: Maybe<Scalars['String']['output']>;
2938
+ /** The PRN of the Channel this Blueprint belongs to. */
2939
+ channelPrn?: Maybe<Scalars['PRN']['output']>;
2890
2940
  createdAt: Scalars['DateTime']['output'];
2891
2941
  /** The Experience Component which defines this Blueprint. */
2892
2942
  definedBy: ExperienceComponent;
2893
2943
  isFixed: Scalars['Boolean']['output'];
2894
2944
  name: Scalars['String']['output'];
2945
+ organization?: Maybe<Organization>;
2895
2946
  prn: Scalars['PRN']['output'];
2896
2947
  stage: Stage;
2897
2948
  updatedAt: Scalars['DateTime']['output'];
@@ -2903,7 +2954,12 @@ export type RemoveBuildingBlockResponse = {
2903
2954
  createdAt: Scalars['DateTime']['output'];
2904
2955
  experienceComponents: Array<ExperienceComponent>;
2905
2956
  gridDefinition?: Maybe<GridDefinition>;
2957
+ /** The successor in manual sort order for Building Blocks of the same Theme and Organization. Null if this is the last. */
2906
2958
  next?: Maybe<BuildingBlock>;
2959
+ organization?: Maybe<Organization>;
2960
+ /** The position of the Building Block in manual sort order within the same Theme and Organization. This uses Fractional Indexing and can be lexicographically sorted. */
2961
+ position: Scalars['String']['output'];
2962
+ /** The predecessor in manual sort order for Building Blocks of the same Theme and Organization. Null if this is the first. */
2907
2963
  previous?: Maybe<BuildingBlock>;
2908
2964
  prn: Scalars['PRN']['output'];
2909
2965
  slug: Scalars['String']['output'];
@@ -2912,28 +2968,29 @@ export type RemoveBuildingBlockResponse = {
2912
2968
  updatedAt: Scalars['DateTime']['output'];
2913
2969
  };
2914
2970
 
2971
+ export type RemoveChannelInput = {
2972
+ /** When true, deletes all related Content Experiences, Blueprints, and Path Parts. When false, removal fails if Blueprints or Content Experiences exist. */
2973
+ force?: InputMaybe<Scalars['Boolean']['input']>;
2974
+ prn: Scalars['PRN']['input'];
2975
+ };
2976
+
2915
2977
  export type RemoveContentExperienceResponse = {
2916
2978
  __typename?: 'RemoveContentExperienceResponse';
2917
- /** The ID of the Channel this ContentExperience belongs to. */
2918
- channelId?: Maybe<Scalars['String']['output']>;
2979
+ /** The PRN of the Channel this ContentExperience belongs to. */
2980
+ channelPrn?: Maybe<Scalars['PRN']['output']>;
2919
2981
  createdAt: Scalars['DateTime']['output'];
2920
2982
  experienceComponent: ExperienceComponent;
2921
2983
  /** The issues that this Content Experience is a subject of */
2922
2984
  issues: Array<Issue>;
2985
+ organization?: Maybe<Organization>;
2923
2986
  pathPart: PathPart;
2924
- /** An array of path part ids from the current path part up to the root, ordered from root to current. */
2925
- pathPartsToRootIds: Array<Scalars['String']['output']>;
2926
2987
  primaryContentItem?: Maybe<ContentItem>;
2927
2988
  prn: Scalars['PRN']['output'];
2928
- /** The Content Values that use this Content Experience as an referenced value. Reverse relation of referencedContentExperiences. */
2929
- referencedBySmartTextContentValues: Array<ContentValue>;
2930
2989
  seoDescription?: Maybe<Scalars['String']['output']>;
2931
2990
  seoTitle?: Maybe<Scalars['String']['output']>;
2932
2991
  slug: Scalars['String']['output'];
2933
2992
  stage: Stage;
2934
- /** The ids of the tags this Content Experience are tagged with, including all ancestor tags. Should only be used for filtering. */
2935
- tagIds: Array<Scalars['String']['output']>;
2936
- /** The tags this Content Experience are tagged with. */
2993
+ /** The Tags assigned to this Content Experience. */
2937
2994
  tags: Array<Tag>;
2938
2995
  title: Scalars['String']['output'];
2939
2996
  updatedAt: Scalars['DateTime']['output'];
@@ -2944,9 +3001,9 @@ export type RemoveContentValueResponse = {
2944
3001
  buildingBlockFieldFulfillments: Array<BuildingBlockFieldFulfillment>;
2945
3002
  contentField?: Maybe<ContentField>;
2946
3003
  contentItem?: Maybe<ContentItem>;
3004
+ /** The PRN of the Content Item structuring this Content Value, if it belongs to one. */
3005
+ contentItemPrn?: Maybe<Scalars['PRN']['output']>;
2947
3006
  createdAt: Scalars['DateTime']['output'];
2948
- /** Whether the ContentValue is structured in a Content Item. */
2949
- hasContentItem: Scalars['Boolean']['output'];
2950
3007
  /** The CAST tree for the smart text with all Content Values interpolated. */
2951
3008
  interpolatedSmartText?: Maybe<Scalars['CAST']['output']>;
2952
3009
  /** Whether the ContentValue is reusable. Defaults to false. */
@@ -2957,9 +3014,14 @@ export type RemoveContentValueResponse = {
2957
3014
  linkedGridPlacement?: Maybe<GridPlacement>;
2958
3015
  linkedPathPart?: Maybe<PathPart>;
2959
3016
  linkedTag?: Maybe<Tag>;
3017
+ /** The successor in manual sort order for Content Values with the same Content Item, Content Field, Organization, and Stage. Null if this is the last. */
2960
3018
  next?: Maybe<ContentValue>;
3019
+ organization?: Maybe<Organization>;
2961
3020
  /** The plain text representation of the smart text. This is used internally. If you really need the plain text representation of CAST, use the castToPlainText utility function. */
2962
3021
  plainText?: Maybe<Scalars['String']['output']>;
3022
+ /** The position of the Content Value in manual sort order within the same Content Item, Content Field, Organization, and Stage. This uses Fractional Indexing and can be lexicographically sorted. Null if the Content Value is not part of a Content Item. */
3023
+ position?: Maybe<Scalars['String']['output']>;
3024
+ /** The predecessor in manual sort order for Content Values with the same Content Item, Content Field, Organization, and Stage. Null if this is the first. */
2963
3025
  previous?: Maybe<ContentValue>;
2964
3026
  /** !!!Warning!!! The filter generated for this field is a hardcoded StringFilter. This means all primitiveValues will be converted to and compared as a string! */
2965
3027
  primitiveValue?: Maybe<Scalars['PrimitiveValue']['output']>;
@@ -2985,7 +3047,7 @@ export type RemoveContentValueResponse = {
2985
3047
  smartText?: Maybe<Scalars['CAST']['output']>;
2986
3048
  stage: Stage;
2987
3049
  updatedAt: Scalars['DateTime']['output'];
2988
- /** The value type name of the Content Value. This is calculated based on the value that is in the Content Value. Filtered using a StringFilter. */
3050
+ /** The value type name of the Content Value. Filtered using a StringFilter. */
2989
3051
  valueTypeName: ContentValueTypeNames;
2990
3052
  };
2991
3053
 
@@ -3009,6 +3071,7 @@ export type RemoveExperienceComponentResponse = {
3009
3071
  isGlobal: Scalars['Boolean']['output'];
3010
3072
  /** The name of the Experience Component. Only applicable for global Experience Components. */
3011
3073
  name?: Maybe<Scalars['String']['output']>;
3074
+ organization?: Maybe<Organization>;
3012
3075
  prn: Scalars['PRN']['output'];
3013
3076
  stage: Stage;
3014
3077
  updatedAt: Scalars['DateTime']['output'];
@@ -3031,7 +3094,7 @@ export type Role = {
3031
3094
  createdAt: Scalars['DateTime']['output'];
3032
3095
  invitations: Array<Invitation>;
3033
3096
  name: DefaultRoleName;
3034
- organization: Organization;
3097
+ organization?: Maybe<Organization>;
3035
3098
  prn: Scalars['PRN']['output'];
3036
3099
  roleAssignments: Array<RoleAssignment>;
3037
3100
  updatedAt: Scalars['DateTime']['output'];
@@ -3040,6 +3103,7 @@ export type Role = {
3040
3103
  export type RoleAssignment = {
3041
3104
  __typename?: 'RoleAssignment';
3042
3105
  createdAt: Scalars['DateTime']['output'];
3106
+ organization?: Maybe<Organization>;
3043
3107
  prn: Scalars['PRN']['output'];
3044
3108
  role: Role;
3045
3109
  subject: Subject;
@@ -3059,6 +3123,7 @@ export enum RuleType {
3059
3123
 
3060
3124
  export enum SeedStatus {
3061
3125
  Completed = 'COMPLETED',
3126
+ Error = 'ERROR',
3062
3127
  InProgress = 'IN_PROGRESS',
3063
3128
  NotStarted = 'NOT_STARTED'
3064
3129
  }
@@ -3082,17 +3147,6 @@ export enum Stage {
3082
3147
  Production = 'PRODUCTION'
3083
3148
  }
3084
3149
 
3085
- export type StringArrayFilter = {
3086
- /** Contains */
3087
- _contains?: InputMaybe<Array<Scalars['String']['input']>>;
3088
- /** Equals (values match exactly) */
3089
- _eq?: InputMaybe<Array<Scalars['String']['input']>>;
3090
- /** Not equals (values do not match exactly) */
3091
- _neq?: InputMaybe<Array<Scalars['String']['input']>>;
3092
- /** Not contains */
3093
- _not_contains?: InputMaybe<Array<Scalars['String']['input']>>;
3094
- };
3095
-
3096
3150
  export type StringFilter = {
3097
3151
  /** Equals */
3098
3152
  _eq?: InputMaybe<Scalars['String']['input']>;
@@ -3148,13 +3202,12 @@ export type Tag = {
3148
3202
  amountOfContentExperiences: Scalars['Int']['output'];
3149
3203
  /** The amount of Content Items that are tagged with this Tag. */
3150
3204
  amountOfContentItems: Scalars['Int']['output'];
3151
- /** The child Tags of this Tag. */
3152
3205
  children: Array<Tag>;
3153
- /** The color of the Tag. This is the color of the nearest ancestor that has a color, or if no ancestor has a color, the Tag's own color. */
3206
+ /** The color of the Tag. This is the color of the root-most ancestor that has a color, or if no ancestor has a color, the Tag's own color. */
3154
3207
  color?: Maybe<Scalars['String']['output']>;
3155
- /** The Content Experiences that are tagged with this Tag. */
3208
+ /** The Content Experiences assigned to this Tag. */
3156
3209
  contentExperiences: Array<ContentExperience>;
3157
- /** The Content Items that are tagged with this Tag. */
3210
+ /** The Content Items assigned to this Tag. */
3158
3211
  contentItems: Array<ContentItem>;
3159
3212
  createdAt: Scalars['DateTime']['output'];
3160
3213
  /** Whether to force the visibility of the Tag on its descendants. */
@@ -3165,10 +3218,11 @@ export type Tag = {
3165
3218
  name: Scalars['String']['output'];
3166
3219
  /** The nesting level of the Tag. */
3167
3220
  nestingLevel: Scalars['Int']['output'];
3168
- /** The parent Tag of this Tag. */
3221
+ organization?: Maybe<Organization>;
3222
+ /** The parent Tag. Only null when this is a root Tag. */
3169
3223
  parent?: Maybe<Tag>;
3170
- /** The ID of the parent Tag. Only null when this is a root Tag. */
3171
- parentId?: Maybe<Scalars['String']['output']>;
3224
+ /** The PRN of the parent Tag. Only null when this is a root Tag. */
3225
+ parentPrn?: Maybe<Scalars['PRN']['output']>;
3172
3226
  /** The path of this Tag. */
3173
3227
  path: Scalars['String']['output'];
3174
3228
  prn: Scalars['PRN']['output'];
@@ -3183,11 +3237,6 @@ export type TagChildrenArgs = {
3183
3237
  where?: InputMaybe<Array<TagsFilterInput>>;
3184
3238
  };
3185
3239
 
3186
-
3187
- export type TagParentArgs = {
3188
- where?: InputMaybe<Array<TagsFilterInput>>;
3189
- };
3190
-
3191
3240
  export type TagEdge = {
3192
3241
  __typename?: 'TagEdge';
3193
3242
  cursor: Scalars['String']['output'];
@@ -3224,7 +3273,7 @@ export type TagsFilterInput = {
3224
3273
  hasForcedVisibility?: InputMaybe<Array<BooleanFilter>>;
3225
3274
  name?: InputMaybe<Array<StringFilter>>;
3226
3275
  nestingLevel?: InputMaybe<Array<IntFilter>>;
3227
- parentId?: InputMaybe<Array<StringFilter>>;
3276
+ parentPrn?: InputMaybe<Array<PrnFilter>>;
3228
3277
  path?: InputMaybe<Array<StringFilter>>;
3229
3278
  prn?: InputMaybe<Array<PrnFilter>>;
3230
3279
  updatedAt?: InputMaybe<Array<DateFilter>>;
@@ -3237,6 +3286,7 @@ export type Theme = {
3237
3286
  channels: Array<Channel>;
3238
3287
  createdAt: Scalars['DateTime']['output'];
3239
3288
  name: Scalars['String']['output'];
3289
+ organization?: Maybe<Organization>;
3240
3290
  prn: Scalars['PRN']['output'];
3241
3291
  repositoryUrl: Scalars['String']['output'];
3242
3292
  updatedAt: Scalars['DateTime']['output'];
@@ -3314,15 +3364,15 @@ export type UpdateBlueprintInput = {
3314
3364
  };
3315
3365
 
3316
3366
  export type UpdateBuildingBlockFieldFulfillmentInput = {
3317
- /** The PRNs of the Content Value which this BuildingBlockFieldFulfillment is filled by. */
3367
+ /** The PRN of the Content Value which this Building Block Field Fulfillment is filled by. */
3318
3368
  contentValue?: InputMaybe<Scalars['PRN']['input']>;
3319
- /** The PRN of the BuildingBlockFieldFulfillment that this BuildingBlockFieldFulfillment should manually be sorted after. */
3369
+ /** The PRN of the Building Block Field Fulfillment that should come immediately after this one in manual sort order within the same Experience Component, Building Block Field, Organization, and Stage. Null appends to the end. */
3320
3370
  next?: InputMaybe<Scalars['PRN']['input']>;
3321
3371
  prn: Scalars['PRN']['input'];
3322
3372
  };
3323
3373
 
3324
3374
  export type UpdateBuildingBlockFieldInput = {
3325
- /** The PRN of the BuildingBlockField that this BuildingBlockField should manually be sorted after. */
3375
+ /** The PRN of the Building Block Field that should come immediately after this one in manual sort order within the same Building Block and Organization. Null appends to the end. */
3326
3376
  next?: InputMaybe<Scalars['PRN']['input']>;
3327
3377
  prn: Scalars['PRN']['input'];
3328
3378
  slug?: InputMaybe<Scalars['String']['input']>;
@@ -3330,7 +3380,7 @@ export type UpdateBuildingBlockFieldInput = {
3330
3380
  };
3331
3381
 
3332
3382
  export type UpdateBuildingBlockInput = {
3333
- /** The PRN of the BuildingBlock that this BuildingBlock should manually be sorted after. */
3383
+ /** The PRN of the Building Block that should come immediately after this one in manual sort order within the same Theme and Organization. Null appends to the end. */
3334
3384
  next?: InputMaybe<Scalars['PRN']['input']>;
3335
3385
  preview?: InputMaybe<Scalars['PRN']['input']>;
3336
3386
  prn: Scalars['PRN']['input'];
@@ -3367,7 +3417,7 @@ export type UpdateContentExperienceInput = {
3367
3417
 
3368
3418
  export type UpdateContentFieldInput = {
3369
3419
  name?: InputMaybe<Scalars['String']['input']>;
3370
- /** The PRN of the ContentField that this ContentField should manually be sorted after. */
3420
+ /** The PRN of the Content Field that should come immediately after this one in manual sort order within the same Content Type and Organization. Null appends to the end. */
3371
3421
  next?: InputMaybe<Scalars['PRN']['input']>;
3372
3422
  prn: Scalars['PRN']['input'];
3373
3423
  slug?: InputMaybe<Scalars['String']['input']>;
@@ -3401,7 +3451,7 @@ export type UpdateContentValueInput = {
3401
3451
  linkedGridPlacement?: InputMaybe<Scalars['PRN']['input']>;
3402
3452
  linkedPathPart?: InputMaybe<Scalars['PRN']['input']>;
3403
3453
  linkedTag?: InputMaybe<Scalars['PRN']['input']>;
3404
- /** The PRN of the ContentValue that this ContentValue should manually be sorted after. */
3454
+ /** The PRN of the Content Value that should come immediately after this one in manual sort order within the same Content Item, Content Field, Organization, and Stage. Null appends to the end. */
3405
3455
  next?: InputMaybe<Scalars['PRN']['input']>;
3406
3456
  /** !!!Warning!!! The filter generated for this field is a hardcoded StringFilter. This means all primitiveValues will be converted to and compared as a string! */
3407
3457
  primitiveValue?: InputMaybe<Scalars['PrimitiveValue']['input']>;
@@ -3445,14 +3495,10 @@ export type UpdateGridDefinitionInput = {
3445
3495
  prn: Scalars['PRN']['input'];
3446
3496
  };
3447
3497
 
3448
- export type UpdateGridInput = {
3449
- prn: Scalars['PRN']['input'];
3450
- rows?: InputMaybe<Scalars['Int']['input']>;
3451
- };
3452
-
3453
3498
  export type UpdateGridPlacementInput = {
3499
+ /** The PRN of the Grid Placement that should come immediately after this one in manual sort order within the same Grid, Organization, and Stage. Null appends to the end. */
3500
+ next?: InputMaybe<Scalars['PRN']['input']>;
3454
3501
  prn: Scalars['PRN']['input'];
3455
- row?: InputMaybe<Scalars['Int']['input']>;
3456
3502
  };
3457
3503
 
3458
3504
  export type UpdateNumberBetweenContentValidationRuleInput = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platecms/delta-vue",
3
- "version": "1.7.0",
3
+ "version": "1.8.0",
4
4
  "description": "Plugin to connect to the Plate Delta CMS in a Vue application.",
5
5
  "license": "UNLICENSED",
6
6
  "publishConfig": {
@@ -23,10 +23,10 @@
23
23
  "./styles.css": "./src/styles.css"
24
24
  },
25
25
  "dependencies": {
26
- "@platecms/delta-cast": "1.7.0",
27
- "@platecms/delta-castscript": "1.7.0",
28
- "@platecms/delta-client": "1.7.0",
29
- "@platecms/delta-plate-resource-notation": "1.7.0",
26
+ "@platecms/delta-cast": "1.8.0",
27
+ "@platecms/delta-castscript": "1.8.0",
28
+ "@platecms/delta-client": "1.8.0",
29
+ "@platecms/delta-plate-resource-notation": "1.8.0",
30
30
  "@graphql-codegen/cli": "5.0.7",
31
31
  "@graphql-typed-document-node/core": "3.2.0",
32
32
  "axios": "1.11.0",
package/project.json CHANGED
@@ -17,6 +17,7 @@
17
17
  },
18
18
  "build": {
19
19
  "executor": "@nx/vite:build",
20
+ "cache": true,
20
21
  "outputs": [
21
22
  "{options.outputPath}"
22
23
  ],
@@ -11,7 +11,6 @@ import MissingExperienceComponent from "../placeholders/MissingExperienceCompone
11
11
  import EditorGridPlacement from "./EditorGridPlacement.vue";
12
12
 
13
13
  defineProps<{
14
- rows?: number
15
14
  experienceComponent: Draft<ExperienceComponent>
16
15
  gridPlacement?: Draft<GridPlacement>
17
16
  }>()
@@ -20,7 +19,7 @@ const blacklist = inject<string[]>('blacklist', [])
20
19
  </script>
21
20
 
22
21
  <template>
23
- <EditorControlsContainer v-if="experienceComponent?.buildingBlock && !blacklist.includes(experienceComponent.buildingBlock.slug)" :rows="rows" :row="gridPlacement?.row" :experience-component="experienceComponent">
22
+ <EditorControlsContainer v-if="experienceComponent?.buildingBlock && !blacklist.includes(experienceComponent.buildingBlock.slug)" :experience-component="experienceComponent">
24
23
  <RenderLibraryComponent :building-block="experienceComponent.buildingBlock" :building-block-field-fulfillments="experienceComponent.buildingBlockFieldFulfillments">
25
24
  <template v-slot:missing-component="slotProps">
26
25
  <MissingExperienceComponent v-if="slotProps.data" :building-block="slotProps.data" />
@@ -28,7 +27,7 @@ const blacklist = inject<string[]>('blacklist', [])
28
27
  </RenderLibraryComponent>
29
28
  </EditorControlsContainer>
30
29
 
31
- <EditorGridPlacement v-for="gridPlacement in sortBy(experienceComponent.grid?.gridPlacements, 'row')" :grid-placement="gridPlacement as Draft<GridPlacement>" :rows="experienceComponent?.grid?.gridPlacements.length" :key="gridPlacement.prn" />
30
+ <EditorGridPlacement v-for="gridPlacement in sortBy(experienceComponent.grid?.gridPlacements, 'row')" :grid-placement="(gridPlacement as Draft<GridPlacement>)" :rows="experienceComponent?.grid?.gridPlacements.length" :key="gridPlacement.prn" />
32
31
  </template>
33
32
 
34
33
  <style scoped>
@@ -1,84 +1,16 @@
1
1
  <script setup lang="ts">
2
- import {throttle} from "lodash";
3
- import {ref, inject} from "vue";
4
- import type { Ref } from "vue";
5
- import {WindowConnector, ConnectorEventType, type Draft} from "@platecms/delta-client/utils"
6
- import type { ExperienceComponentCreateEvent } from "@platecms/delta-client/utils"
7
- import type {BuildingBlock, ExperienceComponent, GridPlacement} from "../../../__generated__/graphql";
8
- import RenderLibraryComponent from "../RenderLibraryComponent.vue";
9
- import MissingExperienceComponent from "../placeholders/MissingExperienceComponent.vue";
2
+ import { type Draft } from "@platecms/delta-client/utils"
3
+ import type {ExperienceComponent, GridPlacement} from "../../../__generated__/graphql";
10
4
  import EditorExperienceComponent from "./EditorExperienceComponent.vue";
11
5
 
12
- const props = defineProps<{
6
+ defineProps<{
13
7
  rows?: number
14
8
  gridPlacement: Draft<GridPlacement>
15
9
  }>()
16
-
17
- const buildingBlockToCreate = inject<Ref<BuildingBlock | undefined>>('buildingBlockToCreate')
18
- const connector = inject<WindowConnector>('connector')
19
- const mode = inject<Ref<'edit' | 'drag'>>('mode')
20
-
21
- const isInsideTarget = ref(false)
22
-
23
- const mousePosition: Ref<'bottom' | 'top' | undefined> = ref(undefined)
24
-
25
- const target = ref<HTMLElement | undefined>(undefined)
26
-
27
-
28
- const updateMode = inject<(mode: 'edit' | 'drag' | 'preview') => void>('updateMode')
29
- const throttleHandleMouseOver = throttle(handleMouseOver, 250)
30
-
31
- function handleMouseOver(event: MouseEvent) {
32
- if(!isInsideTarget.value || !target.value) return
33
-
34
- const targetRectangle = target.value.getBoundingClientRect();
35
-
36
- // const x = event.clientX - targetRectangle.left;
37
- const y = event.clientY - targetRectangle.top;
38
-
39
- mousePosition.value = y > Math.ceil(targetRectangle.height / 2) ? 'bottom' : 'top';
40
- }
41
-
42
- function handleMouseUp() {
43
- if(mousePosition.value === undefined || mode?.value !== 'drag') return
44
-
45
- const index = props.gridPlacement.row + (mousePosition.value === 'bottom' ? 1 : 0)
46
-
47
- connector?.send({ type: ConnectorEventType.EXPERIENCE_COMPONENT_CREATE, payload: { index: index > -1 ? index : 0 } } as ExperienceComponentCreateEvent)
48
- if(updateMode) updateMode('edit')
49
- mousePosition.value = undefined
50
- }
51
10
  </script>
52
11
 
53
12
  <template>
54
- <div
55
- ref="target"
56
- @mouseup="handleMouseUp"
57
- @mouseenter="() => isInsideTarget = true"
58
- @mouseleave="() => {
59
- isInsideTarget = false
60
- mousePosition = undefined
61
- }"
62
- @mousemove="throttleHandleMouseOver"
63
- >
64
- <div v-if="isInsideTarget && mode === 'drag' && mousePosition === 'top'" class="editor-grid-placement-target">
65
- <RenderLibraryComponent :building-block="buildingBlockToCreate">
66
- <template v-slot:missing-component="slotProps">
67
- <MissingExperienceComponent v-if="slotProps.data" :building-block="slotProps.data" />
68
- </template>
69
- </RenderLibraryComponent>
70
- </div>
71
-
72
- <EditorExperienceComponent :experience-component="gridPlacement.experienceComponent as Draft<ExperienceComponent>" :grid-placement="gridPlacement" :rows="rows" />
73
-
74
- <div v-if="isInsideTarget && mode === 'drag' && mousePosition === 'bottom'" class="editor-grid-placement-target">
75
- <RenderLibraryComponent :building-block="buildingBlockToCreate">
76
- <template v-slot:missing-component="slotProps">
77
- <MissingExperienceComponent v-if="slotProps.data" :building-block="slotProps.data" />
78
- </template>
79
- </RenderLibraryComponent>
80
- </div>
81
- </div>
13
+ <EditorExperienceComponent :experience-component="(gridPlacement.experienceComponent as Draft<ExperienceComponent>)" :grid-placement="gridPlacement" :rows="rows" />
82
14
  </template>
83
15
 
84
16
  <style scoped lang="scss">
@@ -1,22 +1,9 @@
1
1
  <script lang="ts" setup>
2
- import {inject} from "vue";
3
- import {
4
- ConnectorEventType,
5
- type Draft,
6
- type ExperienceComponentEditEvent,
7
- type ExperienceComponentRemoveEvent,
8
- GridPlacementDownEvent,
9
- GridPlacementUpEvent,
10
- WindowConnector
11
- } from "@platecms/delta-client/utils"
2
+ import { type Draft } from "@platecms/delta-client/utils"
12
3
  import type {ExperienceComponent} from "../../../../__generated__/graphql";
13
4
 
14
- const connector = inject<WindowConnector>('connector')
15
- const mode = inject<'edit' | 'drag' | 'preview'>('mode', 'preview')
16
5
 
17
6
  defineProps<{
18
- rows?: number
19
- row?: number
20
7
  experienceComponent: Draft<ExperienceComponent>
21
8
  }>()
22
9
  </script>
@@ -33,81 +20,6 @@ defineProps<{
33
20
  <div class="editor-container-controls-label">
34
21
  {{ experienceComponent.buildingBlock?.slug ?? 'No slug' }}
35
22
  </div>
36
- <div v-if="mode === 'edit'" class="editor-container-controls-buttons">
37
- <!-- Edit button -->
38
- <div
39
- @click="connector?.send({
40
- type: ConnectorEventType.EXPERIENCE_COMPONENT_EDIT,
41
- payload: {
42
- uuid: experienceComponent.uuid,
43
- prn: experienceComponent.prn
44
- }
45
- } as ExperienceComponentEditEvent)"
46
- class="editor-container-controls-button"
47
- >
48
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640">
49
- <!-- !Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc. -->
50
- <path fill="#fff" d="M100.4 417.2C104.5 402.6 112.2 389.3 123 378.5L304.2 197.3L338.1 163.4C354.7 180 389.4 214.7 442.1 267.4L476 301.3L442.1 335.2L260.9 516.4C250.2 527.1 236.8 534.9 222.2 539L94.4 574.6C86.1 576.9 77.1 574.6 71 568.4C64.9 562.2 62.6 553.3 64.9 545L100.4 417.2zM156 413.5C151.6 418.2 148.4 423.9 146.7 430.1L122.6 517L209.5 492.9C215.9 491.1 221.7 487.8 226.5 483.2L155.9 413.5zM510 267.4C493.4 250.8 458.7 216.1 406 163.4L372 129.5C398.5 103 413.4 88.1 416.9 84.6C430.4 71 448.8 63.4 468 63.4C487.2 63.4 505.6 71 519.1 84.6L554.8 120.3C568.4 133.9 576 152.3 576 171.4C576 190.5 568.4 209 554.8 222.5C551.3 226 536.4 240.9 509.9 267.4z"/>
51
- </svg>
52
- </div>
53
-
54
- <!-- Remove button -->
55
- <div
56
- @click="connector?.send({
57
- type: ConnectorEventType.EXPERIENCE_COMPONENT_REMOVE,
58
- payload: {
59
- uuid: experienceComponent.uuid,
60
- prn: experienceComponent.prn
61
- }
62
- } as ExperienceComponentRemoveEvent)"
63
- class="editor-container-controls-button"
64
- >
65
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640">
66
- <!-- !Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc. -->
67
- <path fill="#fff" d="M262.2 48C248.9 48 236.9 56.3 232.2 68.8L216 112L120 112C106.7 112 96 122.7 96 136C96 149.3 106.7 160 120 160L520 160C533.3 160 544 149.3 544 136C544 122.7 533.3 112 520 112L424 112L407.8 68.8C403.1 56.3 391.2 48 377.8 48L262.2 48zM128 208L128 512C128 547.3 156.7 576 192 576L448 576C483.3 576 512 547.3 512 512L512 208L464 208L464 512C464 520.8 456.8 528 448 528L192 528C183.2 528 176 520.8 176 512L176 208L128 208zM288 280C288 266.7 277.3 256 264 256C250.7 256 240 266.7 240 280L240 456C240 469.3 250.7 480 264 480C277.3 480 288 469.3 288 456L288 280zM400 280C400 266.7 389.3 256 376 256C362.7 256 352 266.7 352 280L352 456C352 469.3 362.7 480 376 480C389.3 480 400 469.3 400 456L400 280z"/>
68
- </svg>
69
- </div>
70
-
71
- <!-- Move Up button -->
72
- <div
73
- v-if="(row ?? 1) > 1"
74
- @click="connector?.send({
75
- type: ConnectorEventType.GRID_PLACEMENT_UP,
76
- payload: {
77
- uuid: experienceComponent.uuid,
78
- prn: experienceComponent.prn
79
- }
80
- } as GridPlacementUpEvent)"
81
- class="editor-container-controls-button"
82
- >
83
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640">
84
- <!-- !Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc. -->
85
- <path fill="#fff" d="M342.6 81.4C330.1 68.9 309.8 68.9 297.3 81.4L137.3 241.4C124.8 253.9 124.8 274.2 137.3 286.7C149.8 299.2 170.1 299.2 182.6 286.7L288 181.3L288 552C288 569.7 302.3 584 320 584C337.7 584 352 569.7 352 552L352 181.3L457.4 286.7C469.9 299.2 490.2 299.2 502.7 286.7C515.2 274.2 515.2 253.9 502.7 241.4L342.7 81.4z"/>
86
- </svg>
87
- </div>
88
-
89
- <!-- Move Down button -->
90
- <div
91
- v-if="(row ?? 1) <( (rows ?? 1))"
92
- @click="connector?.send({
93
- type: ConnectorEventType.GRID_PLACEMENT_DOWN,
94
- payload: {
95
- uuid: experienceComponent.uuid,
96
- prn: experienceComponent.prn
97
- }
98
- } as GridPlacementDownEvent)"
99
- class="editor-container-controls-button"
100
- >
101
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640">
102
- <!-- !Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc. -->
103
- <path fill="#fff" d="M297.4 566.6C309.9 579.1 330.2 579.1 342.7 566.6L502.7 406.6C515.2 394.1 515.2 373.8 502.7 361.3C490.2 348.8 469.9 348.8 457.4 361.3L352 466.7L352 96C352 78.3 337.7 64 320 64C302.3 64 288 78.3 288 96L288 466.7L182.6 361.3C170.1 348.8 149.8 348.8 137.3 361.3C124.8 373.8 124.8 394.1 137.3 406.6L297.3 566.6z"/>
104
- </svg>
105
- </div>
106
-
107
- <div class="editor-container-controls-button">
108
- <p>{{ row }}</p>
109
- </div>
110
- </div>
111
23
  </div>
112
24
  </div>
113
25
  </template>