@septkit/ui 0.0.50 → 0.0.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dialecte/composables/use-active-document.js +26 -23
- package/dist/dialecte/composables/use-live-data.js +13 -13
- package/dist/dropdown/index.js +2 -1
- package/dist/dropdown/multi-select.js +5 -0
- package/dist/dropdown/multi-select.vue_vue_type_script_setup_true_lang.js +126 -0
- package/dist/external/.pnpm/{@dialecte_scl@0.3.9/node_modules/@dialecte/scl/dist/hooks-DO4gUiix.js → @dialecte_scl@0.3.12/node_modules/@dialecte/scl/dist/hooks-Cm_UYBBt.js} +1 -1
- package/dist/external/.pnpm/@dialecte_scl@0.3.12/node_modules/@dialecte/scl/dist/v2019C1/index.js +22 -0
- package/dist/index.d.ts +108 -47
- package/dist/index.js +20 -19
- package/dist/merge/build-view-model.js +71 -60
- package/dist/merge/decision-toggle.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/merge/element-detail.vue_vue_type_script_setup_true_lang.js +139 -67
- package/dist/merge/merge-correlate.js +46 -0
- package/dist/merge/merge-decision.js +6 -0
- package/dist/merge/merge-highlight.js +44 -0
- package/dist/merge/merge-preflight.js +5 -0
- package/dist/merge/merge-preflight.vue_vue_type_script_setup_true_lang.js +41 -0
- package/dist/merge/merge-progress.vue_vue_type_script_setup_true_lang.js +12 -20
- package/dist/merge/merge-review.vue_vue_type_script_setup_true_lang.js +233 -189
- package/dist/merge/merge-tree.vue_vue_type_script_setup_true_lang.js +74 -65
- package/dist/merge/merge.service.js +36 -23
- package/dist/merge/use-document-progress.js +8 -9
- package/dist/merge/use-merge-session.js +122 -111
- package/dist/ui.css +1 -1
- package/package.json +2 -2
- package/dist/external/.pnpm/@dialecte_scl@0.3.9/node_modules/@dialecte/scl/dist/v2019C1/index.js +0 -3
- package/dist/external/.pnpm/@lucide_vue@1.23.0_vue@3.5.39_typescript@5.8.3_/node_modules/@lucide/vue/dist/esm/icons/rotate-ccw.js +0 -11
|
@@ -1,31 +1,34 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { computed as e, getCurrentScope as t, onScopeDispose as n, ref as r } from "vue";
|
|
2
2
|
//#region lib/dialecte/composables/use-active-document.ts
|
|
3
|
-
function
|
|
4
|
-
let { project:
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
if (
|
|
14
|
-
|
|
3
|
+
function i(i) {
|
|
4
|
+
let { project: a, activeDocumentId: o, hydrate: s, clear: c } = i, l = r(), u = e(() => l.value !== void 0), d = r(o.value), f = 0, p = !1;
|
|
5
|
+
function m() {
|
|
6
|
+
l.value = void 0, c?.();
|
|
7
|
+
}
|
|
8
|
+
async function h(e) {
|
|
9
|
+
let t = ++f;
|
|
10
|
+
if (d.value = e, m(), e) try {
|
|
11
|
+
let { ready: n } = await a.getDocumentStatus(e);
|
|
12
|
+
if (p || t !== f) return;
|
|
13
|
+
if (n) {
|
|
14
|
+
let t = a.openDocument(e);
|
|
15
|
+
l.value = t, s?.(t);
|
|
16
|
+
}
|
|
15
17
|
} catch (e) {
|
|
16
|
-
if (
|
|
17
|
-
console.debug("[useActiveDocument] getDocumentStatus failed", e)
|
|
18
|
+
if (p || t !== f) return;
|
|
19
|
+
console.debug("[useActiveDocument] getDocumentStatus failed", e);
|
|
18
20
|
}
|
|
19
21
|
}
|
|
20
|
-
|
|
21
|
-
let
|
|
22
|
-
|
|
22
|
+
h(o.value);
|
|
23
|
+
let g = o.subscribe((e) => void h(e)), _ = () => {
|
|
24
|
+
p || (p = !0, f += 1, g(), m());
|
|
23
25
|
};
|
|
24
|
-
return
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
return t() && n(_), {
|
|
27
|
+
document: l,
|
|
28
|
+
isReady: u,
|
|
29
|
+
activeDocumentId: d,
|
|
30
|
+
stop: _
|
|
28
31
|
};
|
|
29
32
|
}
|
|
30
33
|
//#endregion
|
|
31
|
-
export {
|
|
34
|
+
export { i as useActiveDocument };
|
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
import { useDebounceFn as e } from "../../external/.pnpm/@vueuse_shared@14.3.0_vue@3.5.39_typescript@5.8.3_/node_modules/@vueuse/shared/dist/index.js";
|
|
2
2
|
import { useAsyncState as t } from "../../external/.pnpm/@vueuse_core@14.3.0_vue@3.5.39_typescript@5.8.3_/node_modules/@vueuse/core/dist/index.js";
|
|
3
3
|
import { useDialecteChannel as n } from "./use-dialecte-channel.js";
|
|
4
|
-
import { computed as r, toValue as i,
|
|
4
|
+
import { computed as r, toValue as i, watch as a } from "vue";
|
|
5
5
|
//#region lib/dialecte/composables/use-live-data.ts
|
|
6
|
-
function
|
|
7
|
-
let { document: s, fetcher: c, initial: l } =
|
|
8
|
-
return
|
|
9
|
-
e?.type === "commit" && e.documentId === h.value
|
|
10
|
-
}),
|
|
11
|
-
u.value = l, m();
|
|
12
|
-
}), {
|
|
6
|
+
function o(o) {
|
|
7
|
+
let { document: s, fetcher: c, initial: l } = o, { state: u, isLoading: d, error: f, execute: p } = t(c, l, { immediate: !1 }), m = e(p, 50), h = r(() => i(s)), { data: g } = n(r(() => h.value?.channelName));
|
|
8
|
+
return a(g, (e) => {
|
|
9
|
+
e?.type === "commit" && e.documentId === h.value?.documentId && m();
|
|
10
|
+
}), a(() => h.value?.documentId, (e) => {
|
|
11
|
+
u.value = l, e && m();
|
|
12
|
+
}, { immediate: !0 }), {
|
|
13
13
|
state: u,
|
|
14
14
|
isLoading: d,
|
|
15
15
|
error: f,
|
|
16
16
|
refresh: p
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
|
-
function
|
|
20
|
-
let { project: s, fetcher: c, initial: l } =
|
|
21
|
-
return
|
|
19
|
+
function s(o) {
|
|
20
|
+
let { project: s, fetcher: c, initial: l } = o, { state: u, isLoading: d, error: f, execute: p } = t(c, l, { immediate: !1 }), m = e(p, 50), h = r(() => i(s)?.channelName), { data: g } = n(h);
|
|
21
|
+
return a(g, (e) => {
|
|
22
22
|
switch (e?.type) {
|
|
23
23
|
case "commit":
|
|
24
24
|
case "init-empty-document":
|
|
25
25
|
case "document-removed":
|
|
26
26
|
case "document-imported": m();
|
|
27
27
|
}
|
|
28
|
-
}),
|
|
28
|
+
}), a(h, (e) => {
|
|
29
29
|
u.value = l, e && m();
|
|
30
30
|
}, { immediate: !0 }), {
|
|
31
31
|
state: u,
|
|
@@ -35,4 +35,4 @@ function c(a) {
|
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
37
|
//#endregion
|
|
38
|
-
export {
|
|
38
|
+
export { o as useLiveData, s as useProjectLiveData };
|
package/dist/dropdown/index.js
CHANGED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { ComboboxRoot_default as e } from "../external/.pnpm/reka-ui@2.10.1_vue@3.5.39_typescript@5.8.3_/node_modules/reka-ui/dist/Combobox/ComboboxRoot.js";
|
|
2
|
+
import { ComboboxAnchor_default as t } from "../external/.pnpm/reka-ui@2.10.1_vue@3.5.39_typescript@5.8.3_/node_modules/reka-ui/dist/Combobox/ComboboxAnchor.js";
|
|
3
|
+
import { ComboboxContent_default as n } from "../external/.pnpm/reka-ui@2.10.1_vue@3.5.39_typescript@5.8.3_/node_modules/reka-ui/dist/Combobox/ComboboxContent.js";
|
|
4
|
+
import { ComboboxEmpty_default as r } from "../external/.pnpm/reka-ui@2.10.1_vue@3.5.39_typescript@5.8.3_/node_modules/reka-ui/dist/Combobox/ComboboxEmpty.js";
|
|
5
|
+
import { ComboboxInput_default as i } from "../external/.pnpm/reka-ui@2.10.1_vue@3.5.39_typescript@5.8.3_/node_modules/reka-ui/dist/Combobox/ComboboxInput.js";
|
|
6
|
+
import { ComboboxItem_default as a } from "../external/.pnpm/reka-ui@2.10.1_vue@3.5.39_typescript@5.8.3_/node_modules/reka-ui/dist/Combobox/ComboboxItem.js";
|
|
7
|
+
import { ComboboxItemIndicator_default as o } from "../external/.pnpm/reka-ui@2.10.1_vue@3.5.39_typescript@5.8.3_/node_modules/reka-ui/dist/Combobox/ComboboxItemIndicator.js";
|
|
8
|
+
import { ComboboxPortal_default as s } from "../external/.pnpm/reka-ui@2.10.1_vue@3.5.39_typescript@5.8.3_/node_modules/reka-ui/dist/Combobox/ComboboxPortal.js";
|
|
9
|
+
import { ComboboxTrigger_default as c } from "../external/.pnpm/reka-ui@2.10.1_vue@3.5.39_typescript@5.8.3_/node_modules/reka-ui/dist/Combobox/ComboboxTrigger.js";
|
|
10
|
+
import { ComboboxViewport_default as l } from "../external/.pnpm/reka-ui@2.10.1_vue@3.5.39_typescript@5.8.3_/node_modules/reka-ui/dist/Combobox/ComboboxViewport.js";
|
|
11
|
+
import u from "../external/.pnpm/@lucide_vue@1.23.0_vue@3.5.39_typescript@5.8.3_/node_modules/@lucide/vue/dist/esm/icons/check.js";
|
|
12
|
+
import d from "../external/.pnpm/@lucide_vue@1.23.0_vue@3.5.39_typescript@5.8.3_/node_modules/@lucide/vue/dist/esm/icons/chevron-down.js";
|
|
13
|
+
import { Fragment as f, computed as p, createBlock as m, createElementBlock as h, createElementVNode as g, createTextVNode as _, createVNode as v, defineComponent as y, mergeModels as b, normalizeClass as x, openBlock as S, renderList as C, toDisplayString as w, unref as T, useModel as E, withCtx as D } from "vue";
|
|
14
|
+
//#region lib/dropdown/multi-select.vue?vue&type=script&setup=true&lang.ts
|
|
15
|
+
var O = { class: "text-xs" }, k = /*@__PURE__*/ y({
|
|
16
|
+
__name: "multi-select",
|
|
17
|
+
props: /*@__PURE__*/ b({
|
|
18
|
+
options: {},
|
|
19
|
+
placeholder: {},
|
|
20
|
+
emptyText: {},
|
|
21
|
+
color: { default: "primary" },
|
|
22
|
+
variant: {},
|
|
23
|
+
size: { default: "md" },
|
|
24
|
+
disabled: { type: Boolean }
|
|
25
|
+
}, {
|
|
26
|
+
modelValue: { default: () => [] },
|
|
27
|
+
modelModifiers: {},
|
|
28
|
+
open: {
|
|
29
|
+
type: Boolean,
|
|
30
|
+
default: !1
|
|
31
|
+
},
|
|
32
|
+
openModifiers: {}
|
|
33
|
+
}),
|
|
34
|
+
emits: ["update:modelValue", "update:open"],
|
|
35
|
+
setup(y) {
|
|
36
|
+
let b = y, k = E(y, "modelValue"), A = E(y, "open"), j = p(() => ({
|
|
37
|
+
"input-neutral": b.color === "neutral",
|
|
38
|
+
"input-primary": b.color === "primary",
|
|
39
|
+
"input-secondary": b.color === "secondary",
|
|
40
|
+
"input-accent": b.color === "accent",
|
|
41
|
+
"input-info": b.color === "info",
|
|
42
|
+
"input-success": b.color === "success",
|
|
43
|
+
"input-warning": b.color === "warning",
|
|
44
|
+
"input-error": b.color === "error",
|
|
45
|
+
"input-ghost": b.variant === "ghost",
|
|
46
|
+
"input-bordered": b.variant === "bordered",
|
|
47
|
+
"input-soft": b.variant === "soft",
|
|
48
|
+
"input-dash": b.variant === "dash",
|
|
49
|
+
"input-xs": b.size === "xs",
|
|
50
|
+
"input-sm": b.size === "sm",
|
|
51
|
+
"input-md": b.size === "md",
|
|
52
|
+
"input-lg": b.size === "lg",
|
|
53
|
+
"input-xl": b.size === "xl"
|
|
54
|
+
})), M = p(() => new Map(b.options.map((e) => [e.value, e.label]))), N = p(() => {
|
|
55
|
+
let e = k.value.map((e) => M.value.get(e) ?? e);
|
|
56
|
+
return e.length ? e.join(", ") : b.placeholder ?? "Select...";
|
|
57
|
+
});
|
|
58
|
+
function P(e, t) {
|
|
59
|
+
return e.filter((e) => e.label.toLowerCase().includes(t.toLowerCase()));
|
|
60
|
+
}
|
|
61
|
+
return (p, b) => (S(), m(T(e), {
|
|
62
|
+
class: "dropdown w-full",
|
|
63
|
+
modelValue: k.value,
|
|
64
|
+
"onUpdate:modelValue": b[0] ||= (e) => k.value = e,
|
|
65
|
+
open: A.value,
|
|
66
|
+
"onUpdate:open": b[1] ||= (e) => A.value = e,
|
|
67
|
+
multiple: "",
|
|
68
|
+
"filter-function": P,
|
|
69
|
+
disabled: y.disabled
|
|
70
|
+
}, {
|
|
71
|
+
default: D(() => [v(T(t), { class: x(["input w-full flex items-center gap-2", j.value]) }, {
|
|
72
|
+
default: D(() => [v(T(c), {
|
|
73
|
+
"data-testid": "multi-select-trigger",
|
|
74
|
+
class: "flex items-center gap-2 w-full"
|
|
75
|
+
}, {
|
|
76
|
+
default: D(() => [g("span", { class: x(["flex-1 min-w-0 truncate text-left text-xs", { "text-base-content/60": !k.value.length }]) }, w(N.value), 3), v(T(d), { class: "h-4 w-4 text-base-content/60 shrink-0" })]),
|
|
77
|
+
_: 1
|
|
78
|
+
})]),
|
|
79
|
+
_: 1
|
|
80
|
+
}, 8, ["class"]), v(T(s), null, {
|
|
81
|
+
default: D(() => [v(T(n), {
|
|
82
|
+
"data-testid": "multi-select-panel",
|
|
83
|
+
position: "popper",
|
|
84
|
+
"side-offset": 4,
|
|
85
|
+
class: "bg-base-100 rounded-box shadow-md z-50 overflow-hidden",
|
|
86
|
+
style: {
|
|
87
|
+
width: "var(--reka-popper-anchor-width)",
|
|
88
|
+
minWidth: "12rem"
|
|
89
|
+
}
|
|
90
|
+
}, {
|
|
91
|
+
default: D(() => [v(T(i), {
|
|
92
|
+
class: "input input-ghost outline-none w-full text-xs",
|
|
93
|
+
placeholder: "Search..."
|
|
94
|
+
}), v(T(l), { class: "max-h-52 overflow-y-auto p-1" }, {
|
|
95
|
+
default: D(() => [v(T(r), { class: "text-base-content/60 text-xs text-center py-2" }, {
|
|
96
|
+
default: D(() => [_(w(y.emptyText ?? "No results found"), 1)]),
|
|
97
|
+
_: 1
|
|
98
|
+
}), (S(!0), h(f, null, C(y.options, (e) => (S(), m(T(a), {
|
|
99
|
+
key: e.value,
|
|
100
|
+
"data-testid": "multi-select-option",
|
|
101
|
+
value: e.value,
|
|
102
|
+
"text-value": e.label,
|
|
103
|
+
class: "cursor-pointer text-xs leading-none w-full flex items-center gap-2 rounded px-2 h-7 pl-7 relative select-none data-disabled:opacity-40 data-disabled:pointer-events-none data-highlighted:outline-none data-highlighted:bg-primary data-highlighted:text-primary-content"
|
|
104
|
+
}, {
|
|
105
|
+
default: D(() => [v(T(o), { class: "absolute left-0 w-6.25 inline-flex items-center justify-center" }, {
|
|
106
|
+
default: D(() => [v(T(u), { class: "h-3 w-3" })]),
|
|
107
|
+
_: 1
|
|
108
|
+
}), g("span", O, w(e.label), 1)]),
|
|
109
|
+
_: 2
|
|
110
|
+
}, 1032, ["value", "text-value"]))), 128))]),
|
|
111
|
+
_: 1
|
|
112
|
+
})]),
|
|
113
|
+
_: 1
|
|
114
|
+
})]),
|
|
115
|
+
_: 1
|
|
116
|
+
})]),
|
|
117
|
+
_: 1
|
|
118
|
+
}, 8, [
|
|
119
|
+
"modelValue",
|
|
120
|
+
"open",
|
|
121
|
+
"disabled"
|
|
122
|
+
]));
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
//#endregion
|
|
126
|
+
export { k as default };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { XSI_NAMESPACE as e } from "../../../../../@dialecte_core@0.4.9/node_modules/@dialecte/core/dist/helpers.js";
|
|
2
|
-
//#region node_modules/.pnpm/@dialecte+scl@0.3.
|
|
2
|
+
//#region node_modules/.pnpm/@dialecte+scl@0.3.12/node_modules/@dialecte/scl/dist/hooks-Cm_UYBBt.js
|
|
3
3
|
var t = /* @__PURE__ */ "AccessControl.AccessPoint.Address.AllocationRole.AllocationRoleRef.AnalogueWiringParameters.AnalogueWiringParametersRef.Application.ApplicationSclRef.Association.Authentication.BDA.Bay.BayType.BehaviorDescription.BehaviorDescriptionRef.BehaviorReference.BinaryWiringParameters.BinaryWiringParametersRef.BitRate.CheckoutID.ClientLN.ClientServices.CommProt.Communication.CommunicationServiceSpecifications.ConductingEquipment.ConfDataSet.ConfLNs.ConfLdName.ConfLogControl.ConfReportControl.ConfSG.ConfSigRef.ConnectedAP.ConnectivityNode.ControlRef.ControllingLNode.DA.DAI.DAS.DAType.DO.DOI.DOS.DOType.DataObjectDirectory.DataSet.DataSetDirectory.DataTypeTemplates.DynAssociation.DynDataSet.EnumType.EnumVal.EqFunction.EqSubFunction.ExtCtrl.ExtRef.FCDA.FileHandling.Function.FunctionCatRef.FunctionCategory.FunctionCategoryRef.FunctionRef.FunctionRole.FunctionRoleContent.FunctionSclRef.FunctionTemplate.FunctionalSubVariant.FunctionalVariant.FunctionalVariantGroup.FunctionalVariantRef.GOOSE.GOOSEMcSecurity.GOOSESecurity.GSE.GSEControl.GSEDir.GSESettings.GSSE.GeneralEquipment.GetCBValues.GetDataObjectDefinition.GetDataSetValue.GetDirectory.GooseParameters.GooseParametersRef.Header.History.Hitem.IED.IEDName.IEDSourceFiles.InputVar.InputVarRef.Inputs.IssuerName.KDC.L2CommParameters.L3IPv4CommParameters.L3IPv6CommParameters.LDevice.LN.LN0.LNode.LNodeDataRef.LNodeInputRef.LNodeInputs.LNodeOutputRef.LNodeOutputs.LNodeSpecNaming.LNodeType.Label.Labels.Line.Log.LogControl.LogParameters.LogParametersRef.LogSettings.MaxTime.McSecurity.MinRequestedSCDFile.MinRequestedSCDFiles.MinTime.MultiAPPerSubNet.NeutralPoint.OptFields.OutputVar.OutputVarRef.Outputs.P.PhysConn.PowerSystemRelation.PowerSystemRelationRef.PowerSystemRelations.PowerTransformer.Private.Process.ProcessEcho.ProcessResource.ProcessResourceRef.ProcessResources.Project.ProjectProcessReference.ProtNs.Protocol.ReadWrite.RedProt.ReportControl.ReportParameters.ReportParametersRef.ReportSettings.Resource.RptEnabled.SCL.SCSM.SDI.SDO.SDS.SGEdit.SMV.SMVParameters.SMVParametersRef.SMVSecurity.SMVSettings.SMVsc.SVMcSecurity.SampledValueControl.SamplesPerSec.SclFileReference.SecPerSamples.Security.Server.ServerAt.ServiceSpecifications.Services.SetDataSetValue.SettingControl.SettingGroups.SignalRole.SmpRate.SmvOpts.SourceFiles.SourceRef.SubCategory.SubCheckoutID.SubEquipment.SubFunction.SubFunctionTemplate.SubNetwork.Subject.SubscriberLNode.Substation.SupSubscription.TapChanger.Terminal.Text.TimeSyncProt.TimerActivatedControl.TransformerWinding.TrgOps.Val.ValueHandling.Variable.VariableApplyTo.VariableRef.Voltage.VoltageLevel".split("."), n = {
|
|
4
4
|
AccessControl: {
|
|
5
5
|
tag: "AccessControl",
|
package/dist/external/.pnpm/@dialecte_scl@0.3.12/node_modules/@dialecte/scl/dist/v2019C1/index.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import "../../../../../../@dialecte_core@0.4.9/node_modules/@dialecte/core/dist/index.js";
|
|
2
|
+
import { i as e } from "../hooks-Cm_UYBBt.js";
|
|
3
|
+
//#region node_modules/.pnpm/@dialecte+scl@0.3.12/node_modules/@dialecte/scl/dist/v2019C1/index.js
|
|
4
|
+
var t = {
|
|
5
|
+
"cross-type-template-uuid": {
|
|
6
|
+
title: "Placeholder templateUuid reused across element types",
|
|
7
|
+
description: "One templateUuid is carried by elements of several different types, so it cannot identify a single template element — it is an authoring placeholder, not real lineage.",
|
|
8
|
+
fallback: "Template lineage is ignored for these elements; each instance is recognised by its name within its parent instead, so the merge still proceeds."
|
|
9
|
+
},
|
|
10
|
+
"duplicate-instance-uuid": {
|
|
11
|
+
title: "Duplicate instance uuid",
|
|
12
|
+
description: "The same uuid is used by more than one element. Every instance uuid in an SCL must be unique, so uuid-based identity is ambiguous for the affected elements.",
|
|
13
|
+
fallback: "The affected elements are matched by name and position rather than uuid, so the merge still proceeds — resolve the duplication to restore reliable identity."
|
|
14
|
+
},
|
|
15
|
+
"template-uuid-type-mismatch": {
|
|
16
|
+
title: "templateUuid resolves to a different element type",
|
|
17
|
+
description: "A templateUuid points in-file to an element of a different type than the one carrying it. An instance cannot derive from a template of another type, so the lineage is inconsistent.",
|
|
18
|
+
fallback: "The mismatched lineage is ignored and the element is recognised by name, so the merge still proceeds."
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
//#endregion
|
|
22
|
+
export { t as TEMPLATE_UUID_WARNING_INFO, e as presentationScope };
|