@conduction/nextcloud-vue 2.119.0 → 2.121.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.
Files changed (179) hide show
  1. package/dist/esm/components/CnAiFeaturesWidget/CnAiFeaturesWidget.vue.js +9 -0
  2. package/dist/esm/components/CnAiFeaturesWidget/CnAiFeaturesWidget.vue.js.map +1 -0
  3. package/dist/esm/components/CnAiFeaturesWidget/CnAiFeaturesWidget.vue2.js +226 -0
  4. package/dist/esm/components/CnAiFeaturesWidget/CnAiFeaturesWidget.vue2.js.map +1 -0
  5. package/dist/esm/components/CnAiFeaturesWidget/CnAiFeaturesWidget.vue3.js +211 -0
  6. package/dist/esm/components/CnAiFeaturesWidget/CnAiFeaturesWidget.vue3.js.map +1 -0
  7. package/dist/esm/components/CnAiFeaturesWidget/CnAiSuggestionDecision.vue.js +9 -0
  8. package/dist/esm/components/CnAiFeaturesWidget/CnAiSuggestionDecision.vue.js.map +1 -0
  9. package/dist/esm/components/CnAiFeaturesWidget/CnAiSuggestionDecision.vue2.js +64 -0
  10. package/dist/esm/components/CnAiFeaturesWidget/CnAiSuggestionDecision.vue2.js.map +1 -0
  11. package/dist/esm/components/CnAiFeaturesWidget/CnAiSuggestionDecision.vue3.js +89 -0
  12. package/dist/esm/components/CnAiFeaturesWidget/CnAiSuggestionDecision.vue3.js.map +1 -0
  13. package/dist/esm/components/CnIcon/semanticIcons.js +2 -2
  14. package/dist/esm/components/CnIcon/semanticIcons.js.map +1 -1
  15. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js +53 -1
  16. package/dist/esm/components/CnIndexPage/CnIndexPage.vue2.js.map +1 -1
  17. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js +546 -523
  18. package/dist/esm/components/CnIndexPage/CnIndexPage.vue3.js.map +1 -1
  19. package/dist/esm/components/CnIndexPage/useNamedSource.js +9 -0
  20. package/dist/esm/components/CnIndexPage/useNamedSource.js.map +1 -1
  21. package/dist/esm/components/CnObjectPermissionsTab/CnObjectPermissionsTab.vue.js +9 -0
  22. package/dist/esm/components/CnObjectPermissionsTab/CnObjectPermissionsTab.vue.js.map +1 -0
  23. package/dist/esm/components/CnObjectPermissionsTab/CnObjectPermissionsTab.vue2.js +257 -0
  24. package/dist/esm/components/CnObjectPermissionsTab/CnObjectPermissionsTab.vue2.js.map +1 -0
  25. package/dist/esm/components/CnObjectPermissionsTab/CnObjectPermissionsTab.vue3.js +266 -0
  26. package/dist/esm/components/CnObjectPermissionsTab/CnObjectPermissionsTab.vue3.js.map +1 -0
  27. package/dist/esm/components/CnObjectSidebar/CnObjectSidebar.vue.js +1 -1
  28. package/dist/esm/components/CnObjectSidebar/CnObjectSidebar.vue2.js +14 -7
  29. package/dist/esm/components/CnObjectSidebar/CnObjectSidebar.vue2.js.map +1 -1
  30. package/dist/esm/components/CnObjectSidebar/CnObjectSidebar.vue3.js.map +1 -1
  31. package/dist/esm/components/CnObjectTranslationsWidget/CnObjectTranslationsWidget.vue.js +9 -0
  32. package/dist/esm/components/CnObjectTranslationsWidget/CnObjectTranslationsWidget.vue.js.map +1 -0
  33. package/dist/esm/components/CnObjectTranslationsWidget/CnObjectTranslationsWidget.vue2.js +278 -0
  34. package/dist/esm/components/CnObjectTranslationsWidget/CnObjectTranslationsWidget.vue2.js.map +1 -0
  35. package/dist/esm/components/CnObjectTranslationsWidget/CnObjectTranslationsWidget.vue3.js +128 -0
  36. package/dist/esm/components/CnObjectTranslationsWidget/CnObjectTranslationsWidget.vue3.js.map +1 -0
  37. package/dist/esm/components/CnReadinessChecklist/CnReadinessChecklist.vue.js +9 -0
  38. package/dist/esm/components/CnReadinessChecklist/CnReadinessChecklist.vue.js.map +1 -0
  39. package/dist/esm/components/CnReadinessChecklist/CnReadinessChecklist.vue2.js +214 -0
  40. package/dist/esm/components/CnReadinessChecklist/CnReadinessChecklist.vue2.js.map +1 -0
  41. package/dist/esm/components/CnReadinessChecklist/CnReadinessChecklist.vue3.js +125 -0
  42. package/dist/esm/components/CnReadinessChecklist/CnReadinessChecklist.vue3.js.map +1 -0
  43. package/dist/esm/components/CnSchemaRulesWidget/CnSchemaRulesWidget.vue.js +9 -0
  44. package/dist/esm/components/CnSchemaRulesWidget/CnSchemaRulesWidget.vue.js.map +1 -0
  45. package/dist/esm/components/CnSchemaRulesWidget/CnSchemaRulesWidget.vue2.js +163 -0
  46. package/dist/esm/components/CnSchemaRulesWidget/CnSchemaRulesWidget.vue2.js.map +1 -0
  47. package/dist/esm/components/CnSchemaRulesWidget/CnSchemaRulesWidget.vue3.js +131 -0
  48. package/dist/esm/components/CnSchemaRulesWidget/CnSchemaRulesWidget.vue3.js.map +1 -0
  49. package/dist/esm/components/CnSchemaRulesWidget/schemaRules.js +127 -0
  50. package/dist/esm/components/CnSchemaRulesWidget/schemaRules.js.map +1 -0
  51. package/dist/esm/components/CnSearchIndexStatus/CnSearchIndexStatus.vue.js +9 -0
  52. package/dist/esm/components/CnSearchIndexStatus/CnSearchIndexStatus.vue.js.map +1 -0
  53. package/dist/esm/components/CnSearchIndexStatus/CnSearchIndexStatus.vue2.js +82 -0
  54. package/dist/esm/components/CnSearchIndexStatus/CnSearchIndexStatus.vue2.js.map +1 -0
  55. package/dist/esm/components/CnSearchIndexStatus/CnSearchIndexStatus.vue3.js +61 -0
  56. package/dist/esm/components/CnSearchIndexStatus/CnSearchIndexStatus.vue3.js.map +1 -0
  57. package/dist/esm/components/CnSearchIndexStatus/searchIndexStatus.js +60 -0
  58. package/dist/esm/components/CnSearchIndexStatus/searchIndexStatus.js.map +1 -0
  59. package/dist/esm/components/CnShippedConfigurationSection/CnShippedConfigurationSection.vue.js +10 -0
  60. package/dist/esm/components/CnShippedConfigurationSection/CnShippedConfigurationSection.vue.js.map +1 -0
  61. package/dist/esm/components/CnShippedConfigurationSection/CnShippedConfigurationSection.vue2.js +226 -0
  62. package/dist/esm/components/CnShippedConfigurationSection/CnShippedConfigurationSection.vue2.js.map +1 -0
  63. package/dist/esm/components/CnShippedConfigurationSection/CnShippedConfigurationSection.vue3.js +126 -0
  64. package/dist/esm/components/CnShippedConfigurationSection/CnShippedConfigurationSection.vue3.js.map +1 -0
  65. package/dist/esm/components/CnStateMachineEditor/CnStateMachineEditor.vue.js +10 -0
  66. package/dist/esm/components/CnStateMachineEditor/CnStateMachineEditor.vue.js.map +1 -0
  67. package/dist/esm/components/CnStateMachineEditor/CnStateMachineEditor.vue2.js +944 -0
  68. package/dist/esm/components/CnStateMachineEditor/CnStateMachineEditor.vue2.js.map +1 -0
  69. package/dist/esm/components/CnStateMachineEditor/CnStateMachineEditor.vue3.js +276 -0
  70. package/dist/esm/components/CnStateMachineEditor/CnStateMachineEditor.vue3.js.map +1 -0
  71. package/dist/esm/components/CnStateMachineEditor/CnStateMachineFields.vue.js +9 -0
  72. package/dist/esm/components/CnStateMachineEditor/CnStateMachineFields.vue.js.map +1 -0
  73. package/dist/esm/components/CnStateMachineEditor/CnStateMachineFields.vue2.js +354 -0
  74. package/dist/esm/components/CnStateMachineEditor/CnStateMachineFields.vue2.js.map +1 -0
  75. package/dist/esm/components/CnStateMachineEditor/CnStateMachineFields.vue3.js +392 -0
  76. package/dist/esm/components/CnStateMachineEditor/CnStateMachineFields.vue3.js.map +1 -0
  77. package/dist/esm/components/CnStateMachineEditor/CnStateMachineNode.vue.js +9 -0
  78. package/dist/esm/components/CnStateMachineEditor/CnStateMachineNode.vue.js.map +1 -0
  79. package/dist/esm/components/CnStateMachineEditor/CnStateMachineNode.vue2.js +180 -0
  80. package/dist/esm/components/CnStateMachineEditor/CnStateMachineNode.vue2.js.map +1 -0
  81. package/dist/esm/components/CnStateMachineEditor/CnStateMachineNode.vue3.js +208 -0
  82. package/dist/esm/components/CnStateMachineEditor/CnStateMachineNode.vue3.js.map +1 -0
  83. package/dist/esm/components/CnStateMachineEditor/CnStateMachinePanel.vue.js +9 -0
  84. package/dist/esm/components/CnStateMachineEditor/CnStateMachinePanel.vue.js.map +1 -0
  85. package/dist/esm/components/CnStateMachineEditor/CnStateMachinePanel.vue2.js +244 -0
  86. package/dist/esm/components/CnStateMachineEditor/CnStateMachinePanel.vue2.js.map +1 -0
  87. package/dist/esm/components/CnStateMachineEditor/CnStateMachinePanel.vue3.js +76 -0
  88. package/dist/esm/components/CnStateMachineEditor/CnStateMachinePanel.vue3.js.map +1 -0
  89. package/dist/esm/components/CnStateMachineEditor/stateMachineFields.js +290 -0
  90. package/dist/esm/components/CnStateMachineEditor/stateMachineFields.js.map +1 -0
  91. package/dist/esm/components/CnTimelineWidget/CnTimelineManage.vue.js +9 -0
  92. package/dist/esm/components/CnTimelineWidget/CnTimelineManage.vue.js.map +1 -0
  93. package/dist/esm/components/CnTimelineWidget/CnTimelineManage.vue2.js +448 -0
  94. package/dist/esm/components/CnTimelineWidget/CnTimelineManage.vue2.js.map +1 -0
  95. package/dist/esm/components/CnTimelineWidget/CnTimelineManage.vue3.js +303 -0
  96. package/dist/esm/components/CnTimelineWidget/CnTimelineManage.vue3.js.map +1 -0
  97. package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue.js +1 -1
  98. package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue2.js +19 -2
  99. package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue2.js.map +1 -1
  100. package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue3.js +73 -62
  101. package/dist/esm/components/CnTimelineWidget/CnTimelineWidget.vue3.js.map +1 -1
  102. package/dist/esm/components/CnWidgetGrid/builtInWidgets.js +6 -0
  103. package/dist/esm/components/CnWidgetGrid/builtInWidgets.js.map +1 -1
  104. package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js +42 -32
  105. package/dist/esm/components/CnWidgetGrid/registerDashboardWidgets.js.map +1 -1
  106. package/dist/esm/composables/indexSources.js +116 -16
  107. package/dist/esm/composables/indexSources.js.map +1 -1
  108. package/dist/esm/index.js +9 -0
  109. package/dist/esm/index.js.map +1 -1
  110. package/dist/esm/l10n/en.json.js +207 -1
  111. package/dist/esm/l10n/en.json.js.map +1 -1
  112. package/dist/esm/l10n/nl.json.js +207 -1
  113. package/dist/esm/l10n/nl.json.js.map +1 -1
  114. package/dist/esm/library-style.js +1 -1
  115. package/dist/esm/nextcloud-vue.css +951 -16
  116. package/dist/esm/utils/aiFeatures.js +245 -0
  117. package/dist/esm/utils/aiFeatures.js.map +1 -0
  118. package/dist/esm/utils/aiSuggestionTracker.js +182 -0
  119. package/dist/esm/utils/aiSuggestionTracker.js.map +1 -0
  120. package/dist/esm/utils/libraryWidgetKeys.js +2 -0
  121. package/dist/esm/utils/libraryWidgetKeys.js.map +1 -1
  122. package/dist/esm/utils/objectPermissions.js +552 -0
  123. package/dist/esm/utils/objectPermissions.js.map +1 -0
  124. package/dist/esm/utils/objectTranslations.js +180 -0
  125. package/dist/esm/utils/objectTranslations.js.map +1 -0
  126. package/dist/esm/utils/stateMachineValidation.js +254 -0
  127. package/dist/esm/utils/stateMachineValidation.js.map +1 -0
  128. package/dist/esm/utils/widgetDispatch.js +3 -1
  129. package/dist/esm/utils/widgetDispatch.js.map +1 -1
  130. package/dist/nextcloud-vue.cjs.js +23038 -14567
  131. package/dist/nextcloud-vue.cjs.js.map +2 -2
  132. package/dist/nextcloud-vue.css +951 -16
  133. package/l10n/en.json +207 -1
  134. package/l10n/nl.json +207 -1
  135. package/package.json +1 -1
  136. package/src/components/CnAiFeaturesWidget/CnAiFeaturesWidget.vue +416 -0
  137. package/src/components/CnAiFeaturesWidget/CnAiSuggestionDecision.vue +136 -0
  138. package/src/components/CnAiFeaturesWidget/__tests__/CnAiFeaturesWidget.spec.js +213 -0
  139. package/src/components/CnAiFeaturesWidget/index.js +14 -0
  140. package/src/components/CnIndexPage/CnIndexPage.vue +74 -3
  141. package/src/components/CnIndexPage/useNamedSource.js +9 -0
  142. package/src/components/CnObjectPermissionsTab/CnObjectPermissionsTab.vue +499 -0
  143. package/src/components/CnObjectPermissionsTab/__tests__/CnObjectPermissionsTab.spec.js +186 -0
  144. package/src/components/CnObjectPermissionsTab/index.js +13 -0
  145. package/src/components/CnObjectSidebar/CnObjectSidebar.vue +8 -1
  146. package/src/components/CnObjectTranslationsWidget/CnObjectTranslationsWidget.vue +424 -0
  147. package/src/components/CnObjectTranslationsWidget/__tests__/CnObjectTranslationsWidget.spec.js +189 -0
  148. package/src/components/CnObjectTranslationsWidget/index.js +13 -0
  149. package/src/components/CnReadinessChecklist/CnReadinessChecklist.vue +335 -0
  150. package/src/components/CnReadinessChecklist/index.js +9 -0
  151. package/src/components/CnSchemaRulesWidget/CnSchemaRulesWidget.vue +300 -0
  152. package/src/components/CnSchemaRulesWidget/index.js +10 -0
  153. package/src/components/CnSchemaRulesWidget/schemaRules.js +123 -0
  154. package/src/components/CnSearchIndexStatus/CnSearchIndexStatus.vue +160 -0
  155. package/src/components/CnSearchIndexStatus/index.js +10 -0
  156. package/src/components/CnSearchIndexStatus/searchIndexStatus.js +56 -0
  157. package/src/components/CnShippedConfigurationSection/CnShippedConfigurationSection.vue +328 -0
  158. package/src/components/CnShippedConfigurationSection/index.js +9 -0
  159. package/src/components/CnStateMachineEditor/CnStateMachineEditor.vue +1332 -0
  160. package/src/components/CnStateMachineEditor/CnStateMachineFields.vue +791 -0
  161. package/src/components/CnStateMachineEditor/CnStateMachineNode.vue +442 -0
  162. package/src/components/CnStateMachineEditor/CnStateMachinePanel.vue +326 -0
  163. package/src/components/CnStateMachineEditor/index.js +8 -0
  164. package/src/components/CnStateMachineEditor/stateMachineFields.js +287 -0
  165. package/src/components/CnTimelineWidget/CnTimelineManage.vue +827 -0
  166. package/src/components/CnTimelineWidget/CnTimelineWidget.vue +29 -3
  167. package/src/components/CnWidgetGrid/builtInWidgets.js +6 -0
  168. package/src/components/CnWidgetGrid/registerDashboardWidgets.js +10 -0
  169. package/src/components/index.js +8 -0
  170. package/src/composables/indexSources.js +116 -16
  171. package/src/css/index-page.css +7 -0
  172. package/src/index.js +9 -0
  173. package/src/utils/aiFeatures.js +241 -0
  174. package/src/utils/aiSuggestionTracker.js +178 -0
  175. package/src/utils/libraryWidgetKeys.js +2 -0
  176. package/src/utils/objectPermissions.js +548 -0
  177. package/src/utils/objectTranslations.js +176 -0
  178. package/src/utils/stateMachineValidation.js +250 -0
  179. package/src/utils/widgetDispatch.js +3 -1
@@ -0,0 +1,180 @@
1
+ import { NcActions, NcActionButton } from '@nextcloud/vue';
2
+ import ArrowRight from 'vue-material-design-icons/ArrowRight.vue';
3
+ import DeleteOutline from 'vue-material-design-icons/DeleteOutline.vue';
4
+ import LinkOff from 'vue-material-design-icons/LinkOff.vue';
5
+ import Pencil from 'vue-material-design-icons/Pencil.vue';
6
+ import Plus from 'vue-material-design-icons/Plus.vue';
7
+ import { asList } from '../../utils/stateMachineValidation.js';
8
+
9
+ /**
10
+ * The body of one state on the CnStateMachineEditor canvas: its name, its
11
+ * steps, and a menu that offers every canvas gesture from the keyboard.
12
+ *
13
+ * Rendered inside CnGraphCanvas's focusable node wrapper, which owns moving
14
+ * (arrow keys), connecting (`c`) and removing (Delete) the state.
15
+ */
16
+ var script = {
17
+ name: 'CnStateMachineNode',
18
+
19
+ components: { NcActions, NcActionButton, ArrowRight, DeleteOutline, LinkOff, Pencil, Plus },
20
+
21
+ props: {
22
+ /** The state's name. */
23
+ label: {
24
+ type: String,
25
+ required: true,
26
+ },
27
+
28
+ /** Whether the state is final. */
29
+ final: {
30
+ type: Boolean,
31
+ default: false,
32
+ },
33
+
34
+ /** The state's steps, in order. */
35
+ steps: {
36
+ type: Array,
37
+ default: () => [],
38
+ },
39
+
40
+ /** Whether steps are part of this machine. */
41
+ showSteps: {
42
+ type: Boolean,
43
+ default: true,
44
+ },
45
+
46
+ /** Record keys of a step: `{ title, required, badge }`. */
47
+ stepKeys: {
48
+ type: Object,
49
+ default: () => ({ title: 'title', required: 'required', badge: '' }),
50
+ },
51
+
52
+ /** The step whose panel is open. */
53
+ selectedStepId: {
54
+ type: String,
55
+ default: null,
56
+ },
57
+
58
+ /** States this one has no transition to yet: `{ id, label }`. */
59
+ connectTargets: {
60
+ type: Array,
61
+ default: () => [],
62
+ },
63
+
64
+ /** Transitions leaving this state: `{ id, targetLabel }`. */
65
+ outgoing: {
66
+ type: Array,
67
+ default: () => [],
68
+ },
69
+
70
+ /** Whether the actions menu is open. */
71
+ menuOpen: {
72
+ type: Boolean,
73
+ default: false,
74
+ },
75
+
76
+ /** Hide every editing control. */
77
+ readOnly: {
78
+ type: Boolean,
79
+ default: false,
80
+ },
81
+
82
+ /** Resolves an editor text by name: `(name, vars) => string`. */
83
+ say: {
84
+ type: Function,
85
+ required: true,
86
+ },
87
+ },
88
+
89
+ emits: [
90
+ 'add-step',
91
+ 'connect',
92
+ 'delete-state',
93
+ 'disconnect',
94
+ 'edit-transition',
95
+ 'step-click',
96
+ 'step-move',
97
+ 'update:menuOpen',
98
+ ],
99
+
100
+ data() {
101
+ return {
102
+ dragIndex: null,
103
+ }
104
+ },
105
+
106
+ methods: {
107
+ /**
108
+ * @param {object} step A step.
109
+ * @return {string} Its title.
110
+ */
111
+ stepTitle(step) {
112
+ return step[this.stepKeys.title] || ''
113
+ },
114
+
115
+ /**
116
+ * @param {object} step A step.
117
+ * @return {boolean} Whether it is required.
118
+ */
119
+ isRequired(step) {
120
+ return this.stepKeys.required ? step[this.stepKeys.required] === true : false
121
+ },
122
+
123
+ /**
124
+ * @param {object} step A step.
125
+ * @return {number} The length of the list its badge counts, 0 for none.
126
+ */
127
+ badgeOf(step) {
128
+ return this.stepKeys.badge ? asList(step[this.stepKeys.badge]).length : 0
129
+ },
130
+
131
+ /**
132
+ * Keys on a step stay on the step: Alt with an arrow moves it within the
133
+ * state, everything else is the button's own.
134
+ *
135
+ * @param {number} index The step's position.
136
+ * @param {KeyboardEvent} event The key event.
137
+ * @return {void}
138
+ */
139
+ onStepKeydown(index, event) {
140
+ event.stopPropagation();
141
+ if (this.readOnly || event.altKey !== true) {
142
+ return
143
+ }
144
+ if (event.key === 'ArrowUp' && index > 0) {
145
+ event.preventDefault();
146
+ this.$emit('step-move', { from: index, to: index - 1 });
147
+ } else if (event.key === 'ArrowDown' && index < this.steps.length - 1) {
148
+ event.preventDefault();
149
+ this.$emit('step-move', { from: index, to: index + 1 });
150
+ }
151
+ },
152
+
153
+ /**
154
+ * @param {number} index The dragged step.
155
+ * @param {DragEvent} event The drag event.
156
+ * @return {void}
157
+ */
158
+ onStepDragStart(index, event) {
159
+ this.dragIndex = index;
160
+ if (event.dataTransfer) {
161
+ event.dataTransfer.effectAllowed = 'move';
162
+ event.dataTransfer.setData('text/plain', String(index));
163
+ }
164
+ },
165
+
166
+ /**
167
+ * @param {number} index The step dropped on.
168
+ * @return {void}
169
+ */
170
+ onStepDrop(index) {
171
+ if (this.dragIndex !== null && this.dragIndex !== index) {
172
+ this.$emit('step-move', { from: this.dragIndex, to: index });
173
+ }
174
+ this.dragIndex = null;
175
+ },
176
+ },
177
+ };
178
+
179
+ export { script as default };
180
+ //# sourceMappingURL=CnStateMachineNode.vue2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CnStateMachineNode.vue2.js","sources":["../../../../src/components/CnStateMachineEditor/CnStateMachineNode.vue"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2026 Conduction B.V. <info@conduction.nl>\n - SPDX-License-Identifier: EUPL-1.2\n -->\n<template>\n\t<div class=\"cn-sm-node\" :class=\"{ 'cn-sm-node--final': final }\">\n\t\t<div class=\"cn-sm-node__header\">\n\t\t\t<span class=\"cn-sm-node__name\">{{ label }}</span>\n\t\t\t<span\n\t\t\t\tv-if=\"showSteps && steps.length > 0\"\n\t\t\t\tclass=\"cn-sm-node__count\"\n\t\t\t\t:title=\"say('stepCount', { count: steps.length })\">\n\t\t\t\t<span aria-hidden=\"true\">{{ steps.length }}</span>\n\t\t\t\t<span class=\"cn-sm-node__sr\">{{ say('stepCount', { count: steps.length }) }}</span>\n\t\t\t</span>\n\n\t\t\t<!-- Every pointer gesture on the canvas has a menu entry here, so a\n\t\t\t keyboard reaches all of them. Keys and pointer events stop at\n\t\t\t this wrapper: the node's own handler would otherwise move or\n\t\t\t remove the state on an arrow or Delete meant for the menu. -->\n\t\t\t<div\n\t\t\t\tv-if=\"!readOnly\"\n\t\t\t\tclass=\"cn-sm-node__menu nodrag nopan\"\n\t\t\t\t@keydown.stop\n\t\t\t\t@click.stop\n\t\t\t\t@mousedown.stop\n\t\t\t\t@pointerdown.stop>\n\t\t\t\t<NcActions\n\t\t\t\t\t:open=\"menuOpen\"\n\t\t\t\t\t:inline=\"0\"\n\t\t\t\t\t:aria-label=\"say('stateActions', { name: label })\"\n\t\t\t\t\t@update:open=\"$emit('update:menuOpen', $event)\">\n\t\t\t\t\t<NcActionButton\n\t\t\t\t\t\tv-for=\"target in connectTargets\"\n\t\t\t\t\t\t:key=\"`connect-${target.id}`\"\n\t\t\t\t\t\tcloseAfterClick\n\t\t\t\t\t\t@click=\"$emit('connect', target.id)\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<ArrowRight :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ say('connectTo', { name: target.label }) }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t<NcActionButton\n\t\t\t\t\t\tv-for=\"transition in outgoing\"\n\t\t\t\t\t\t:key=\"`edit-${transition.id}`\"\n\t\t\t\t\t\tcloseAfterClick\n\t\t\t\t\t\t@click=\"$emit('edit-transition', transition.id)\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Pencil :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ say('editTransitionTo', { name: transition.targetLabel }) }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t<NcActionButton\n\t\t\t\t\t\tv-for=\"transition in outgoing\"\n\t\t\t\t\t\t:key=\"`disconnect-${transition.id}`\"\n\t\t\t\t\t\tcloseAfterClick\n\t\t\t\t\t\t@click=\"$emit('disconnect', transition.id)\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<LinkOff :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ say('disconnectFrom', { name: transition.targetLabel }) }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t<NcActionButton v-if=\"showSteps\" closeAfterClick @click=\"$emit('add-step')\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Plus :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ say('addStep') }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t<NcActionButton closeAfterClick @click=\"$emit('delete-state')\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<DeleteOutline :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ say('deleteState') }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</NcActions>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<span v-if=\"final\" class=\"cn-sm-node__chip\">{{ say('final') }}</span>\n\n\t\t<ul v-if=\"showSteps && steps.length > 0\" class=\"cn-sm-node__steps\">\n\t\t\t<li v-for=\"(step, index) in steps\" :key=\"step.id\">\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass=\"cn-sm-node__step nodrag nopan\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'cn-sm-node__step--required': isRequired(step),\n\t\t\t\t\t\t'cn-sm-node__step--selected': step.id === selectedStepId,\n\t\t\t\t\t}\"\n\t\t\t\t\t:aria-pressed=\"step.id === selectedStepId ? 'true' : 'false'\"\n\t\t\t\t\t:draggable=\"readOnly ? 'false' : 'true'\"\n\t\t\t\t\t@click.stop=\"$emit('step-click', step.id)\"\n\t\t\t\t\t@keydown=\"onStepKeydown(index, $event)\"\n\t\t\t\t\t@mousedown.stop\n\t\t\t\t\t@pointerdown.stop\n\t\t\t\t\t@dragstart.stop=\"onStepDragStart(index, $event)\"\n\t\t\t\t\t@dragover.prevent\n\t\t\t\t\t@drop.stop.prevent=\"onStepDrop(index)\">\n\t\t\t\t\t<span v-if=\"isRequired(step)\" class=\"cn-sm-node__required\" aria-hidden=\"true\">*</span>\n\t\t\t\t\t<span class=\"cn-sm-node__step-name\">{{ stepTitle(step) }}</span>\n\t\t\t\t\t<span v-if=\"isRequired(step)\" class=\"cn-sm-node__sr\">{{ say('required') }}</span>\n\t\t\t\t\t<span v-if=\"badgeOf(step) > 0\" class=\"cn-sm-node__checks\">{{ badgeOf(step) }}</span>\n\t\t\t\t</button>\n\t\t\t</li>\n\t\t</ul>\n\n\t\t<button\n\t\t\tv-if=\"showSteps && !readOnly\"\n\t\t\ttype=\"button\"\n\t\t\tclass=\"cn-sm-node__add nodrag nopan\"\n\t\t\t@click.stop=\"$emit('add-step')\"\n\t\t\t@keydown.stop\n\t\t\t@mousedown.stop\n\t\t\t@pointerdown.stop>\n\t\t\t<Plus :size=\"16\" />\n\t\t\t<span>{{ say('addStep') }}</span>\n\t\t</button>\n\t</div>\n</template>\n\n<script>\nimport { NcActionButton, NcActions } from '@nextcloud/vue'\nimport ArrowRight from 'vue-material-design-icons/ArrowRight.vue'\nimport DeleteOutline from 'vue-material-design-icons/DeleteOutline.vue'\nimport LinkOff from 'vue-material-design-icons/LinkOff.vue'\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\nimport Plus from 'vue-material-design-icons/Plus.vue'\nimport { asList } from '../../utils/stateMachineValidation.js'\n\n/**\n * The body of one state on the CnStateMachineEditor canvas: its name, its\n * steps, and a menu that offers every canvas gesture from the keyboard.\n *\n * Rendered inside CnGraphCanvas's focusable node wrapper, which owns moving\n * (arrow keys), connecting (`c`) and removing (Delete) the state.\n */\nexport default {\n\tname: 'CnStateMachineNode',\n\n\tcomponents: { NcActions, NcActionButton, ArrowRight, DeleteOutline, LinkOff, Pencil, Plus },\n\n\tprops: {\n\t\t/** The state's name. */\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\n\t\t/** Whether the state is final. */\n\t\tfinal: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/** The state's steps, in order. */\n\t\tsteps: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\n\t\t/** Whether steps are part of this machine. */\n\t\tshowSteps: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/** Record keys of a step: `{ title, required, badge }`. */\n\t\tstepKeys: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({ title: 'title', required: 'required', badge: '' }),\n\t\t},\n\n\t\t/** The step whose panel is open. */\n\t\tselectedStepId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/** States this one has no transition to yet: `{ id, label }`. */\n\t\tconnectTargets: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\n\t\t/** Transitions leaving this state: `{ id, targetLabel }`. */\n\t\toutgoing: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\n\t\t/** Whether the actions menu is open. */\n\t\tmenuOpen: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/** Hide every editing control. */\n\t\treadOnly: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/** Resolves an editor text by name: `(name, vars) => string`. */\n\t\tsay: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\temits: [\n\t\t'add-step',\n\t\t'connect',\n\t\t'delete-state',\n\t\t'disconnect',\n\t\t'edit-transition',\n\t\t'step-click',\n\t\t'step-move',\n\t\t'update:menuOpen',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tdragIndex: null,\n\t\t}\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * @param {object} step A step.\n\t\t * @return {string} Its title.\n\t\t */\n\t\tstepTitle(step) {\n\t\t\treturn step[this.stepKeys.title] || ''\n\t\t},\n\n\t\t/**\n\t\t * @param {object} step A step.\n\t\t * @return {boolean} Whether it is required.\n\t\t */\n\t\tisRequired(step) {\n\t\t\treturn this.stepKeys.required ? step[this.stepKeys.required] === true : false\n\t\t},\n\n\t\t/**\n\t\t * @param {object} step A step.\n\t\t * @return {number} The length of the list its badge counts, 0 for none.\n\t\t */\n\t\tbadgeOf(step) {\n\t\t\treturn this.stepKeys.badge ? asList(step[this.stepKeys.badge]).length : 0\n\t\t},\n\n\t\t/**\n\t\t * Keys on a step stay on the step: Alt with an arrow moves it within the\n\t\t * state, everything else is the button's own.\n\t\t *\n\t\t * @param {number} index The step's position.\n\t\t * @param {KeyboardEvent} event The key event.\n\t\t * @return {void}\n\t\t */\n\t\tonStepKeydown(index, event) {\n\t\t\tevent.stopPropagation()\n\t\t\tif (this.readOnly || event.altKey !== true) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (event.key === 'ArrowUp' && index > 0) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.$emit('step-move', { from: index, to: index - 1 })\n\t\t\t} else if (event.key === 'ArrowDown' && index < this.steps.length - 1) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.$emit('step-move', { from: index, to: index + 1 })\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @param {number} index The dragged step.\n\t\t * @param {DragEvent} event The drag event.\n\t\t * @return {void}\n\t\t */\n\t\tonStepDragStart(index, event) {\n\t\t\tthis.dragIndex = index\n\t\t\tif (event.dataTransfer) {\n\t\t\t\tevent.dataTransfer.effectAllowed = 'move'\n\t\t\t\tevent.dataTransfer.setData('text/plain', String(index))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @param {number} index The step dropped on.\n\t\t * @return {void}\n\t\t */\n\t\tonStepDrop(index) {\n\t\t\tif (this.dragIndex !== null && this.dragIndex !== index) {\n\t\t\t\tthis.$emit('step-move', { from: this.dragIndex, to: index })\n\t\t\t}\n\t\t\tthis.dragIndex = null\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n.cn-sm-node {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 6px;\n\ttext-align: start;\n}\n\n.cn-sm-node__header {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n\tmin-width: 0;\n}\n\n.cn-sm-node__name {\n\tflex: 1 1 auto;\n\tmin-width: 0;\n\toverflow: hidden;\n\tfont-size: 14px;\n\tfont-weight: 600;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.cn-sm-node__count {\n\tflex: none;\n\tmin-width: 20px;\n\tpadding: 0 6px;\n\tborder-radius: 10px;\n\tbackground: var(--color-primary-element, #0082c9);\n\tcolor: var(--color-primary-element-text, #fff);\n\tfont-size: 12px;\n\tfont-weight: 600;\n\ttext-align: center;\n}\n\n.cn-sm-node__menu {\n\tflex: none;\n\tmargin: -6px -8px -6px 0;\n}\n\n.cn-sm-node__chip {\n\talign-self: flex-start;\n\tpadding: 2px 8px;\n\tborder-radius: 10px;\n\tbackground: var(--color-success, #2d7b41);\n\tcolor: var(--color-success-text, #fff);\n\tfont-size: 12px;\n\tfont-weight: 600;\n}\n\n.cn-sm-node__steps {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 0 -12px;\n\tpadding: 0;\n\tlist-style: none;\n}\n\n.cn-sm-node__step {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 4px;\n\twidth: 100%;\n\tmin-height: 28px;\n\tpadding: 2px 12px;\n\tborder: 0;\n\tbackground: none;\n\tcolor: var(--color-main-text, #222);\n\tfont: inherit;\n\tfont-size: 13px;\n\ttext-align: start;\n\tcursor: pointer;\n}\n\n.cn-sm-node__step:hover,\n.cn-sm-node__step--selected {\n\tbackground: var(--color-background-hover, #f5f5f5);\n}\n\n.cn-sm-node__step:focus-visible,\n.cn-sm-node__add:focus-visible {\n\toutline: 2px solid var(--color-primary-element, #0082c9);\n\toutline-offset: -2px;\n}\n\n.cn-sm-node__step--required {\n\tfont-weight: 600;\n}\n\n.cn-sm-node__required {\n\tcolor: var(--color-error-text, #c9302c);\n}\n\n.cn-sm-node__step-name {\n\tflex: 1 1 auto;\n\tmin-width: 0;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.cn-sm-node__checks {\n\tflex: none;\n\tpadding: 0 4px;\n\tborder-radius: 4px;\n\tbackground: var(--color-background-dark, #ededed);\n\tcolor: var(--color-text-maxcontrast, #6b6b6b);\n\tfont-size: 11px;\n}\n\n.cn-sm-node__add {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 4px;\n\tmargin: 0 -12px -8px;\n\tmin-height: 32px;\n\tpadding: 4px 12px;\n\tborder: 0;\n\tborder-top: 1px solid var(--color-border, #d0d0d0);\n\tbackground: none;\n\tcolor: var(--color-text-maxcontrast, #6b6b6b);\n\tfont: inherit;\n\tfont-size: 13px;\n\tcursor: pointer;\n}\n\n.cn-sm-node__add:hover {\n\tbackground: var(--color-background-hover, #f5f5f5);\n\tcolor: var(--color-main-text, #222);\n}\n\n.cn-sm-node__sr {\n\tposition: absolute;\n\twidth: 1px;\n\theight: 1px;\n\toverflow: hidden;\n\tclip-path: inset(50%);\n\twhite-space: nowrap;\n}\n</style>\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,208 @@
1
+ import { resolveComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, createCommentVNode, withModifiers, createVNode, withCtx, Fragment, renderList, createBlock, createTextVNode } from 'vue';
2
+
3
+ const _hoisted_1 = { class: "cn-sm-node__header" };
4
+ const _hoisted_2 = { class: "cn-sm-node__name" };
5
+ const _hoisted_3 = ["title"];
6
+ const _hoisted_4 = { "aria-hidden": "true" };
7
+ const _hoisted_5 = { class: "cn-sm-node__sr" };
8
+ const _hoisted_6 = {
9
+ key: 0,
10
+ class: "cn-sm-node__chip"
11
+ };
12
+ const _hoisted_7 = {
13
+ key: 1,
14
+ class: "cn-sm-node__steps"
15
+ };
16
+ const _hoisted_8 = ["aria-pressed", "draggable", "onClick", "onKeydown", "onDragstart", "onDrop"];
17
+ const _hoisted_9 = {
18
+ key: 0,
19
+ class: "cn-sm-node__required",
20
+ "aria-hidden": "true"
21
+ };
22
+ const _hoisted_10 = { class: "cn-sm-node__step-name" };
23
+ const _hoisted_11 = {
24
+ key: 1,
25
+ class: "cn-sm-node__sr"
26
+ };
27
+ const _hoisted_12 = {
28
+ key: 2,
29
+ class: "cn-sm-node__checks"
30
+ };
31
+
32
+ function render(_ctx, _cache, $props, $setup, $data, $options) {
33
+ const _component_ArrowRight = resolveComponent("ArrowRight");
34
+ const _component_NcActionButton = resolveComponent("NcActionButton");
35
+ const _component_Pencil = resolveComponent("Pencil");
36
+ const _component_LinkOff = resolveComponent("LinkOff");
37
+ const _component_Plus = resolveComponent("Plus");
38
+ const _component_DeleteOutline = resolveComponent("DeleteOutline");
39
+ const _component_NcActions = resolveComponent("NcActions");
40
+
41
+ return (openBlock(), createElementBlock("div", {
42
+ class: normalizeClass(["cn-sm-node", { 'cn-sm-node--final': $props.final }])
43
+ }, [
44
+ createElementVNode("div", _hoisted_1, [
45
+ createElementVNode("span", _hoisted_2, toDisplayString($props.label), 1 /* TEXT */),
46
+ ($props.showSteps && $props.steps.length > 0)
47
+ ? (openBlock(), createElementBlock("span", {
48
+ key: 0,
49
+ class: "cn-sm-node__count",
50
+ title: $props.say('stepCount', { count: $props.steps.length })
51
+ }, [
52
+ createElementVNode("span", _hoisted_4, toDisplayString($props.steps.length), 1 /* TEXT */),
53
+ createElementVNode("span", _hoisted_5, toDisplayString($props.say('stepCount', { count: $props.steps.length })), 1 /* TEXT */)
54
+ ], 8 /* PROPS */, _hoisted_3))
55
+ : createCommentVNode("v-if", true),
56
+ (!$props.readOnly)
57
+ ? (openBlock(), createElementBlock("div", {
58
+ key: 1,
59
+ class: "cn-sm-node__menu nodrag nopan",
60
+ onKeydown: _cache[3] || (_cache[3] = withModifiers(() => {}, ["stop"])),
61
+ onClick: _cache[4] || (_cache[4] = withModifiers(() => {}, ["stop"])),
62
+ onMousedown: _cache[5] || (_cache[5] = withModifiers(() => {}, ["stop"])),
63
+ onPointerdown: _cache[6] || (_cache[6] = withModifiers(() => {}, ["stop"]))
64
+ }, [
65
+ createVNode(_component_NcActions, {
66
+ open: $props.menuOpen,
67
+ inline: 0,
68
+ "aria-label": $props.say('stateActions', { name: $props.label }),
69
+ "onUpdate:open": _cache[2] || (_cache[2] = $event => (_ctx.$emit('update:menuOpen', $event)))
70
+ }, {
71
+ default: withCtx(() => [
72
+ (openBlock(true), createElementBlock(Fragment, null, renderList($props.connectTargets, (target) => {
73
+ return (openBlock(), createBlock(_component_NcActionButton, {
74
+ key: `connect-${target.id}`,
75
+ closeAfterClick: "",
76
+ onClick: $event => (_ctx.$emit('connect', target.id))
77
+ }, {
78
+ icon: withCtx(() => [
79
+ createVNode(_component_ArrowRight, { size: 20 })
80
+ ]),
81
+ default: withCtx(() => [
82
+ createTextVNode(" " + toDisplayString($props.say('connectTo', { name: target.label })), 1 /* TEXT */)
83
+ ]),
84
+ _: 2 /* DYNAMIC */
85
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["onClick"]))
86
+ }), 128 /* KEYED_FRAGMENT */)),
87
+ (openBlock(true), createElementBlock(Fragment, null, renderList($props.outgoing, (transition) => {
88
+ return (openBlock(), createBlock(_component_NcActionButton, {
89
+ key: `edit-${transition.id}`,
90
+ closeAfterClick: "",
91
+ onClick: $event => (_ctx.$emit('edit-transition', transition.id))
92
+ }, {
93
+ icon: withCtx(() => [
94
+ createVNode(_component_Pencil, { size: 20 })
95
+ ]),
96
+ default: withCtx(() => [
97
+ createTextVNode(" " + toDisplayString($props.say('editTransitionTo', { name: transition.targetLabel })), 1 /* TEXT */)
98
+ ]),
99
+ _: 2 /* DYNAMIC */
100
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["onClick"]))
101
+ }), 128 /* KEYED_FRAGMENT */)),
102
+ (openBlock(true), createElementBlock(Fragment, null, renderList($props.outgoing, (transition) => {
103
+ return (openBlock(), createBlock(_component_NcActionButton, {
104
+ key: `disconnect-${transition.id}`,
105
+ closeAfterClick: "",
106
+ onClick: $event => (_ctx.$emit('disconnect', transition.id))
107
+ }, {
108
+ icon: withCtx(() => [
109
+ createVNode(_component_LinkOff, { size: 20 })
110
+ ]),
111
+ default: withCtx(() => [
112
+ createTextVNode(" " + toDisplayString($props.say('disconnectFrom', { name: transition.targetLabel })), 1 /* TEXT */)
113
+ ]),
114
+ _: 2 /* DYNAMIC */
115
+ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["onClick"]))
116
+ }), 128 /* KEYED_FRAGMENT */)),
117
+ ($props.showSteps)
118
+ ? (openBlock(), createBlock(_component_NcActionButton, {
119
+ key: 0,
120
+ closeAfterClick: "",
121
+ onClick: _cache[0] || (_cache[0] = $event => (_ctx.$emit('add-step')))
122
+ }, {
123
+ icon: withCtx(() => [
124
+ createVNode(_component_Plus, { size: 20 })
125
+ ]),
126
+ default: withCtx(() => [
127
+ createTextVNode(" " + toDisplayString($props.say('addStep')), 1 /* TEXT */)
128
+ ]),
129
+ _: 1 /* STABLE */
130
+ }))
131
+ : createCommentVNode("v-if", true),
132
+ createVNode(_component_NcActionButton, {
133
+ closeAfterClick: "",
134
+ onClick: _cache[1] || (_cache[1] = $event => (_ctx.$emit('delete-state')))
135
+ }, {
136
+ icon: withCtx(() => [
137
+ createVNode(_component_DeleteOutline, { size: 20 })
138
+ ]),
139
+ default: withCtx(() => [
140
+ createTextVNode(" " + toDisplayString($props.say('deleteState')), 1 /* TEXT */)
141
+ ]),
142
+ _: 1 /* STABLE */
143
+ })
144
+ ]),
145
+ _: 1 /* STABLE */
146
+ }, 8 /* PROPS */, ["open", "aria-label"])
147
+ ], 32 /* NEED_HYDRATION */))
148
+ : createCommentVNode("v-if", true)
149
+ ]),
150
+ ($props.final)
151
+ ? (openBlock(), createElementBlock("span", _hoisted_6, toDisplayString($props.say('final')), 1 /* TEXT */))
152
+ : createCommentVNode("v-if", true),
153
+ ($props.showSteps && $props.steps.length > 0)
154
+ ? (openBlock(), createElementBlock("ul", _hoisted_7, [
155
+ (openBlock(true), createElementBlock(Fragment, null, renderList($props.steps, (step, index) => {
156
+ return (openBlock(), createElementBlock("li", {
157
+ key: step.id
158
+ }, [
159
+ createElementVNode("button", {
160
+ type: "button",
161
+ class: normalizeClass(["cn-sm-node__step nodrag nopan", {
162
+ 'cn-sm-node__step--required': $options.isRequired(step),
163
+ 'cn-sm-node__step--selected': step.id === $props.selectedStepId,
164
+ }]),
165
+ "aria-pressed": step.id === $props.selectedStepId ? 'true' : 'false',
166
+ draggable: $props.readOnly ? 'false' : 'true',
167
+ onClick: withModifiers($event => (_ctx.$emit('step-click', step.id)), ["stop"]),
168
+ onKeydown: $event => ($options.onStepKeydown(index, $event)),
169
+ onMousedown: _cache[7] || (_cache[7] = withModifiers(() => {}, ["stop"])),
170
+ onPointerdown: _cache[8] || (_cache[8] = withModifiers(() => {}, ["stop"])),
171
+ onDragstart: withModifiers($event => ($options.onStepDragStart(index, $event)), ["stop"]),
172
+ onDragover: _cache[9] || (_cache[9] = withModifiers(() => {}, ["prevent"])),
173
+ onDrop: withModifiers($event => ($options.onStepDrop(index)), ["stop","prevent"])
174
+ }, [
175
+ ($options.isRequired(step))
176
+ ? (openBlock(), createElementBlock("span", _hoisted_9, "*"))
177
+ : createCommentVNode("v-if", true),
178
+ createElementVNode("span", _hoisted_10, toDisplayString($options.stepTitle(step)), 1 /* TEXT */),
179
+ ($options.isRequired(step))
180
+ ? (openBlock(), createElementBlock("span", _hoisted_11, toDisplayString($props.say('required')), 1 /* TEXT */))
181
+ : createCommentVNode("v-if", true),
182
+ ($options.badgeOf(step) > 0)
183
+ ? (openBlock(), createElementBlock("span", _hoisted_12, toDisplayString($options.badgeOf(step)), 1 /* TEXT */))
184
+ : createCommentVNode("v-if", true)
185
+ ], 42 /* CLASS, PROPS, NEED_HYDRATION */, _hoisted_8)
186
+ ]))
187
+ }), 128 /* KEYED_FRAGMENT */))
188
+ ]))
189
+ : createCommentVNode("v-if", true),
190
+ ($props.showSteps && !$props.readOnly)
191
+ ? (openBlock(), createElementBlock("button", {
192
+ key: 2,
193
+ type: "button",
194
+ class: "cn-sm-node__add nodrag nopan",
195
+ onClick: _cache[10] || (_cache[10] = withModifiers($event => (_ctx.$emit('add-step')), ["stop"])),
196
+ onKeydown: _cache[11] || (_cache[11] = withModifiers(() => {}, ["stop"])),
197
+ onMousedown: _cache[12] || (_cache[12] = withModifiers(() => {}, ["stop"])),
198
+ onPointerdown: _cache[13] || (_cache[13] = withModifiers(() => {}, ["stop"]))
199
+ }, [
200
+ createVNode(_component_Plus, { size: 16 }),
201
+ createElementVNode("span", null, toDisplayString($props.say('addStep')), 1 /* TEXT */)
202
+ ], 32 /* NEED_HYDRATION */))
203
+ : createCommentVNode("v-if", true)
204
+ ], 2 /* CLASS */))
205
+ }
206
+
207
+ export { render };
208
+ //# sourceMappingURL=CnStateMachineNode.vue3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CnStateMachineNode.vue3.js","sources":["../../../../src/components/CnStateMachineEditor/CnStateMachineNode.vue?vue&type=template&id=5d910d3c&lang.js"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2026 Conduction B.V. <info@conduction.nl>\n - SPDX-License-Identifier: EUPL-1.2\n -->\n<template>\n\t<div class=\"cn-sm-node\" :class=\"{ 'cn-sm-node--final': final }\">\n\t\t<div class=\"cn-sm-node__header\">\n\t\t\t<span class=\"cn-sm-node__name\">{{ label }}</span>\n\t\t\t<span\n\t\t\t\tv-if=\"showSteps && steps.length > 0\"\n\t\t\t\tclass=\"cn-sm-node__count\"\n\t\t\t\t:title=\"say('stepCount', { count: steps.length })\">\n\t\t\t\t<span aria-hidden=\"true\">{{ steps.length }}</span>\n\t\t\t\t<span class=\"cn-sm-node__sr\">{{ say('stepCount', { count: steps.length }) }}</span>\n\t\t\t</span>\n\n\t\t\t<!-- Every pointer gesture on the canvas has a menu entry here, so a\n\t\t\t keyboard reaches all of them. Keys and pointer events stop at\n\t\t\t this wrapper: the node's own handler would otherwise move or\n\t\t\t remove the state on an arrow or Delete meant for the menu. -->\n\t\t\t<div\n\t\t\t\tv-if=\"!readOnly\"\n\t\t\t\tclass=\"cn-sm-node__menu nodrag nopan\"\n\t\t\t\t@keydown.stop\n\t\t\t\t@click.stop\n\t\t\t\t@mousedown.stop\n\t\t\t\t@pointerdown.stop>\n\t\t\t\t<NcActions\n\t\t\t\t\t:open=\"menuOpen\"\n\t\t\t\t\t:inline=\"0\"\n\t\t\t\t\t:aria-label=\"say('stateActions', { name: label })\"\n\t\t\t\t\t@update:open=\"$emit('update:menuOpen', $event)\">\n\t\t\t\t\t<NcActionButton\n\t\t\t\t\t\tv-for=\"target in connectTargets\"\n\t\t\t\t\t\t:key=\"`connect-${target.id}`\"\n\t\t\t\t\t\tcloseAfterClick\n\t\t\t\t\t\t@click=\"$emit('connect', target.id)\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<ArrowRight :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ say('connectTo', { name: target.label }) }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t<NcActionButton\n\t\t\t\t\t\tv-for=\"transition in outgoing\"\n\t\t\t\t\t\t:key=\"`edit-${transition.id}`\"\n\t\t\t\t\t\tcloseAfterClick\n\t\t\t\t\t\t@click=\"$emit('edit-transition', transition.id)\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Pencil :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ say('editTransitionTo', { name: transition.targetLabel }) }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t<NcActionButton\n\t\t\t\t\t\tv-for=\"transition in outgoing\"\n\t\t\t\t\t\t:key=\"`disconnect-${transition.id}`\"\n\t\t\t\t\t\tcloseAfterClick\n\t\t\t\t\t\t@click=\"$emit('disconnect', transition.id)\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<LinkOff :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ say('disconnectFrom', { name: transition.targetLabel }) }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t<NcActionButton v-if=\"showSteps\" closeAfterClick @click=\"$emit('add-step')\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<Plus :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ say('addStep') }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t\t<NcActionButton closeAfterClick @click=\"$emit('delete-state')\">\n\t\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t\t<DeleteOutline :size=\"20\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t{{ say('deleteState') }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</NcActions>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<span v-if=\"final\" class=\"cn-sm-node__chip\">{{ say('final') }}</span>\n\n\t\t<ul v-if=\"showSteps && steps.length > 0\" class=\"cn-sm-node__steps\">\n\t\t\t<li v-for=\"(step, index) in steps\" :key=\"step.id\">\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass=\"cn-sm-node__step nodrag nopan\"\n\t\t\t\t\t:class=\"{\n\t\t\t\t\t\t'cn-sm-node__step--required': isRequired(step),\n\t\t\t\t\t\t'cn-sm-node__step--selected': step.id === selectedStepId,\n\t\t\t\t\t}\"\n\t\t\t\t\t:aria-pressed=\"step.id === selectedStepId ? 'true' : 'false'\"\n\t\t\t\t\t:draggable=\"readOnly ? 'false' : 'true'\"\n\t\t\t\t\t@click.stop=\"$emit('step-click', step.id)\"\n\t\t\t\t\t@keydown=\"onStepKeydown(index, $event)\"\n\t\t\t\t\t@mousedown.stop\n\t\t\t\t\t@pointerdown.stop\n\t\t\t\t\t@dragstart.stop=\"onStepDragStart(index, $event)\"\n\t\t\t\t\t@dragover.prevent\n\t\t\t\t\t@drop.stop.prevent=\"onStepDrop(index)\">\n\t\t\t\t\t<span v-if=\"isRequired(step)\" class=\"cn-sm-node__required\" aria-hidden=\"true\">*</span>\n\t\t\t\t\t<span class=\"cn-sm-node__step-name\">{{ stepTitle(step) }}</span>\n\t\t\t\t\t<span v-if=\"isRequired(step)\" class=\"cn-sm-node__sr\">{{ say('required') }}</span>\n\t\t\t\t\t<span v-if=\"badgeOf(step) > 0\" class=\"cn-sm-node__checks\">{{ badgeOf(step) }}</span>\n\t\t\t\t</button>\n\t\t\t</li>\n\t\t</ul>\n\n\t\t<button\n\t\t\tv-if=\"showSteps && !readOnly\"\n\t\t\ttype=\"button\"\n\t\t\tclass=\"cn-sm-node__add nodrag nopan\"\n\t\t\t@click.stop=\"$emit('add-step')\"\n\t\t\t@keydown.stop\n\t\t\t@mousedown.stop\n\t\t\t@pointerdown.stop>\n\t\t\t<Plus :size=\"16\" />\n\t\t\t<span>{{ say('addStep') }}</span>\n\t\t</button>\n\t</div>\n</template>\n\n<script>\nimport { NcActionButton, NcActions } from '@nextcloud/vue'\nimport ArrowRight from 'vue-material-design-icons/ArrowRight.vue'\nimport DeleteOutline from 'vue-material-design-icons/DeleteOutline.vue'\nimport LinkOff from 'vue-material-design-icons/LinkOff.vue'\nimport Pencil from 'vue-material-design-icons/Pencil.vue'\nimport Plus from 'vue-material-design-icons/Plus.vue'\nimport { asList } from '../../utils/stateMachineValidation.js'\n\n/**\n * The body of one state on the CnStateMachineEditor canvas: its name, its\n * steps, and a menu that offers every canvas gesture from the keyboard.\n *\n * Rendered inside CnGraphCanvas's focusable node wrapper, which owns moving\n * (arrow keys), connecting (`c`) and removing (Delete) the state.\n */\nexport default {\n\tname: 'CnStateMachineNode',\n\n\tcomponents: { NcActions, NcActionButton, ArrowRight, DeleteOutline, LinkOff, Pencil, Plus },\n\n\tprops: {\n\t\t/** The state's name. */\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\n\t\t/** Whether the state is final. */\n\t\tfinal: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/** The state's steps, in order. */\n\t\tsteps: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\n\t\t/** Whether steps are part of this machine. */\n\t\tshowSteps: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/** Record keys of a step: `{ title, required, badge }`. */\n\t\tstepKeys: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({ title: 'title', required: 'required', badge: '' }),\n\t\t},\n\n\t\t/** The step whose panel is open. */\n\t\tselectedStepId: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/** States this one has no transition to yet: `{ id, label }`. */\n\t\tconnectTargets: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\n\t\t/** Transitions leaving this state: `{ id, targetLabel }`. */\n\t\toutgoing: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\n\t\t/** Whether the actions menu is open. */\n\t\tmenuOpen: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/** Hide every editing control. */\n\t\treadOnly: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/** Resolves an editor text by name: `(name, vars) => string`. */\n\t\tsay: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\temits: [\n\t\t'add-step',\n\t\t'connect',\n\t\t'delete-state',\n\t\t'disconnect',\n\t\t'edit-transition',\n\t\t'step-click',\n\t\t'step-move',\n\t\t'update:menuOpen',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tdragIndex: null,\n\t\t}\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * @param {object} step A step.\n\t\t * @return {string} Its title.\n\t\t */\n\t\tstepTitle(step) {\n\t\t\treturn step[this.stepKeys.title] || ''\n\t\t},\n\n\t\t/**\n\t\t * @param {object} step A step.\n\t\t * @return {boolean} Whether it is required.\n\t\t */\n\t\tisRequired(step) {\n\t\t\treturn this.stepKeys.required ? step[this.stepKeys.required] === true : false\n\t\t},\n\n\t\t/**\n\t\t * @param {object} step A step.\n\t\t * @return {number} The length of the list its badge counts, 0 for none.\n\t\t */\n\t\tbadgeOf(step) {\n\t\t\treturn this.stepKeys.badge ? asList(step[this.stepKeys.badge]).length : 0\n\t\t},\n\n\t\t/**\n\t\t * Keys on a step stay on the step: Alt with an arrow moves it within the\n\t\t * state, everything else is the button's own.\n\t\t *\n\t\t * @param {number} index The step's position.\n\t\t * @param {KeyboardEvent} event The key event.\n\t\t * @return {void}\n\t\t */\n\t\tonStepKeydown(index, event) {\n\t\t\tevent.stopPropagation()\n\t\t\tif (this.readOnly || event.altKey !== true) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (event.key === 'ArrowUp' && index > 0) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.$emit('step-move', { from: index, to: index - 1 })\n\t\t\t} else if (event.key === 'ArrowDown' && index < this.steps.length - 1) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.$emit('step-move', { from: index, to: index + 1 })\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @param {number} index The dragged step.\n\t\t * @param {DragEvent} event The drag event.\n\t\t * @return {void}\n\t\t */\n\t\tonStepDragStart(index, event) {\n\t\t\tthis.dragIndex = index\n\t\t\tif (event.dataTransfer) {\n\t\t\t\tevent.dataTransfer.effectAllowed = 'move'\n\t\t\t\tevent.dataTransfer.setData('text/plain', String(index))\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * @param {number} index The step dropped on.\n\t\t * @return {void}\n\t\t */\n\t\tonStepDrop(index) {\n\t\t\tif (this.dragIndex !== null && this.dragIndex !== index) {\n\t\t\t\tthis.$emit('step-move', { from: this.dragIndex, to: index })\n\t\t\t}\n\t\t\tthis.dragIndex = null\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n.cn-sm-node {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 6px;\n\ttext-align: start;\n}\n\n.cn-sm-node__header {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n\tmin-width: 0;\n}\n\n.cn-sm-node__name {\n\tflex: 1 1 auto;\n\tmin-width: 0;\n\toverflow: hidden;\n\tfont-size: 14px;\n\tfont-weight: 600;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.cn-sm-node__count {\n\tflex: none;\n\tmin-width: 20px;\n\tpadding: 0 6px;\n\tborder-radius: 10px;\n\tbackground: var(--color-primary-element, #0082c9);\n\tcolor: var(--color-primary-element-text, #fff);\n\tfont-size: 12px;\n\tfont-weight: 600;\n\ttext-align: center;\n}\n\n.cn-sm-node__menu {\n\tflex: none;\n\tmargin: -6px -8px -6px 0;\n}\n\n.cn-sm-node__chip {\n\talign-self: flex-start;\n\tpadding: 2px 8px;\n\tborder-radius: 10px;\n\tbackground: var(--color-success, #2d7b41);\n\tcolor: var(--color-success-text, #fff);\n\tfont-size: 12px;\n\tfont-weight: 600;\n}\n\n.cn-sm-node__steps {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin: 0 -12px;\n\tpadding: 0;\n\tlist-style: none;\n}\n\n.cn-sm-node__step {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 4px;\n\twidth: 100%;\n\tmin-height: 28px;\n\tpadding: 2px 12px;\n\tborder: 0;\n\tbackground: none;\n\tcolor: var(--color-main-text, #222);\n\tfont: inherit;\n\tfont-size: 13px;\n\ttext-align: start;\n\tcursor: pointer;\n}\n\n.cn-sm-node__step:hover,\n.cn-sm-node__step--selected {\n\tbackground: var(--color-background-hover, #f5f5f5);\n}\n\n.cn-sm-node__step:focus-visible,\n.cn-sm-node__add:focus-visible {\n\toutline: 2px solid var(--color-primary-element, #0082c9);\n\toutline-offset: -2px;\n}\n\n.cn-sm-node__step--required {\n\tfont-weight: 600;\n}\n\n.cn-sm-node__required {\n\tcolor: var(--color-error-text, #c9302c);\n}\n\n.cn-sm-node__step-name {\n\tflex: 1 1 auto;\n\tmin-width: 0;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.cn-sm-node__checks {\n\tflex: none;\n\tpadding: 0 4px;\n\tborder-radius: 4px;\n\tbackground: var(--color-background-dark, #ededed);\n\tcolor: var(--color-text-maxcontrast, #6b6b6b);\n\tfont-size: 11px;\n}\n\n.cn-sm-node__add {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 4px;\n\tmargin: 0 -12px -8px;\n\tmin-height: 32px;\n\tpadding: 4px 12px;\n\tborder: 0;\n\tborder-top: 1px solid var(--color-border, #d0d0d0);\n\tbackground: none;\n\tcolor: var(--color-text-maxcontrast, #6b6b6b);\n\tfont: inherit;\n\tfont-size: 13px;\n\tcursor: pointer;\n}\n\n.cn-sm-node__add:hover {\n\tbackground: var(--color-background-hover, #f5f5f5);\n\tcolor: var(--color-main-text, #222);\n}\n\n.cn-sm-node__sr {\n\tposition: absolute;\n\twidth: 1px;\n\theight: 1px;\n\toverflow: hidden;\n\tclip-path: inset(50%);\n\twhite-space: nowrap;\n}\n</style>\n"],"names":["_createElementBlock","_normalizeClass","_toDisplayString","_createElementVNode","_Fragment","_renderList","_createBlock","_createVNode","_createTextVNode","_openBlock","_withModifiers"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import script from './CnStateMachinePanel.vue2.js';
2
+ import { render } from './CnStateMachinePanel.vue3.js';
3
+
4
+ script.render = render;
5
+ script.__scopeId = "data-v-dd581f76";
6
+ const __sfc_main = script;
7
+
8
+ export { __sfc_main as default };
9
+ //# sourceMappingURL=CnStateMachinePanel.vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CnStateMachinePanel.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}