data-navigator 2.1.0 → 2.2.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.
- package/dist/index.js +48 -26
- package/dist/index.mjs +77 -45
- package/dist/src/data-navigator.d.ts +4 -0
- package/dist/structure.js +1 -1
- package/dist/structure.mjs +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -886,9 +886,14 @@ var buildEdges = function(options, nodes, dimensions) {
|
|
|
886
886
|
l++;
|
|
887
887
|
});
|
|
888
888
|
dimensionKeys.forEach(function(s) {
|
|
889
|
-
var _dimension_behavior;
|
|
889
|
+
var _dimension_behavior, _dimension_behavior1, _dimension_behavior2, _dimension_behavior3;
|
|
890
890
|
var dimension = dimensions[s];
|
|
891
|
-
var
|
|
891
|
+
var strat = ((_dimension_behavior = dimension.behavior) === null || _dimension_behavior === void 0 ? void 0 : _dimension_behavior.childmostNavigation) || "within";
|
|
892
|
+
var matchByIndex = function(i, _a, _b, c) {
|
|
893
|
+
return c.values[Object.keys(c.values)[i]] || void 0;
|
|
894
|
+
};
|
|
895
|
+
var match = strat === "across" && ((_dimension_behavior1 = dimension.behavior) === null || _dimension_behavior1 === void 0 ? void 0 : _dimension_behavior1.childmostMatching) ? (_dimension_behavior2 = dimension.behavior) === null || _dimension_behavior2 === void 0 ? void 0 : _dimension_behavior2.childmostMatching : matchByIndex;
|
|
896
|
+
var extents2 = ((_dimension_behavior3 = dimension.behavior) === null || _dimension_behavior3 === void 0 ? void 0 : _dimension_behavior3.extents) || "circular";
|
|
892
897
|
if (!dimension.divisions) {
|
|
893
898
|
console.error("Parsing dimensions. The dimension using the key ".concat(s, " is missing the divisions property. dimension.divisions should be supplied. ").concat(JSON.stringify(dimension), "."));
|
|
894
899
|
}
|
|
@@ -928,33 +933,50 @@ var buildEdges = function(options, nodes, dimensions) {
|
|
|
928
933
|
} else {
|
|
929
934
|
createEdge(v[id], parentId, dimension.navigationRules.parent_child, "source");
|
|
930
935
|
}
|
|
931
|
-
if (
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
if (
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
936
|
+
if (strat === "within") {
|
|
937
|
+
if (i === valueKeys.length - 1 && extents2 === "circular") {
|
|
938
|
+
var targetId = typeof options.idKey === "function" ? options.idKey(division.values[valueKeys[0]]) : options.idKey;
|
|
939
|
+
createEdge(v[id], division.values[valueKeys[0]][targetId], dimension.navigationRules.sibling_sibling);
|
|
940
|
+
} else if (i === valueKeys.length - 1 && extents2 === "bridgedCousins") {
|
|
941
|
+
if (j !== divisionKeys.length - 1) {
|
|
942
|
+
var targetId1 = typeof options.idKey === "function" ? options.idKey(dimension.divisions[divisionKeys[j + 1]].values[valueKeys[0]]) : options.idKey;
|
|
943
|
+
createEdge(v[id], dimension.divisions[divisionKeys[j + 1]].values[valueKeys[0]][targetId1], dimension.navigationRules.sibling_sibling);
|
|
944
|
+
} else {
|
|
945
|
+
var targetId2 = typeof options.idKey === "function" ? options.idKey(dimension.divisions[divisionKeys[0]].values[valueKeys[0]]) : options.idKey;
|
|
946
|
+
createEdge(v[id], dimension.divisions[divisionKeys[0]].values[valueKeys[0]][targetId2], dimension.navigationRules.sibling_sibling);
|
|
947
|
+
}
|
|
948
|
+
} else if (i === valueKeys.length - 1 && extents2 === "bridgedCustom") {
|
|
949
|
+
createEdge(v[id], dimension.behavior.customBridgePost, dimension.navigationRules.sibling_sibling);
|
|
950
|
+
} else if (i < valueKeys.length - 1) {
|
|
951
|
+
var targetId3 = typeof options.idKey === "function" ? options.idKey(division.values[valueKeys[i + 1]]) : options.idKey;
|
|
952
|
+
createEdge(v[id], division.values[valueKeys[i + 1]][targetId3], dimension.navigationRules.sibling_sibling);
|
|
941
953
|
}
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
createEdge(dimension.
|
|
954
|
+
if (!i && extents2 === "bridgedCousins") {
|
|
955
|
+
if (j !== 0) {
|
|
956
|
+
var targetId4 = typeof options.idKey === "function" ? options.idKey(dimension.divisions[divisionKeys[j - 1]].values[valueKeys[valueKeys.length - 1]]) : options.idKey;
|
|
957
|
+
createEdge(dimension.divisions[divisionKeys[j - 1]].values[valueKeys[valueKeys.length - 1]][targetId4], v[id], dimension.navigationRules.sibling_sibling);
|
|
958
|
+
} else {
|
|
959
|
+
var targetId5 = typeof options.idKey === "function" ? options.idKey(dimension.divisions[divisionKeys[divisionKeys.length - 1]].values[valueKeys[valueKeys.length - 1]]) : options.idKey;
|
|
960
|
+
createEdge(dimension.divisions[divisionKeys[divisionKeys.length - 1]].values[valueKeys[valueKeys.length - 1]][targetId5], v[id], dimension.navigationRules.sibling_sibling);
|
|
961
|
+
}
|
|
962
|
+
} else if (!i && extents2 === "bridgedCustom") {
|
|
963
|
+
createEdge(dimension.behavior.customBridgePrevious, v[id], dimension.navigationRules.sibling_sibling);
|
|
964
|
+
}
|
|
965
|
+
} else {
|
|
966
|
+
if (j === divisionKeys.length - 1 && extents2 === "bridgedCustom") {
|
|
967
|
+
createEdge(v[id], dimension.behavior.customBridgePost, dimension.navigationRules.sibling_sibling);
|
|
968
|
+
} else if (!j && extents2 === "bridgedCustom") {
|
|
969
|
+
createEdge(dimension.behavior.customBridgePrevious, v[id], dimension.navigationRules.sibling_sibling);
|
|
952
970
|
} else {
|
|
953
|
-
var
|
|
954
|
-
|
|
971
|
+
var targetDivision = j === divisionKeys.length - 1 && extents2 === "circular" ? dimension.divisions[divisionKeys[0]] : dimension.divisions[divisionKeys[j + 1]];
|
|
972
|
+
if (targetDivision) {
|
|
973
|
+
var target = match(i, v[id], division, targetDivision);
|
|
974
|
+
if (target) {
|
|
975
|
+
var targetId6 = typeof options.idKey === "function" ? options.idKey(target) : options.idKey;
|
|
976
|
+
createEdge(v[id], target[targetId6], dimension.navigationRules.sibling_sibling);
|
|
977
|
+
}
|
|
978
|
+
}
|
|
955
979
|
}
|
|
956
|
-
} else if (!i && extents2 === "bridgedCustom") {
|
|
957
|
-
createEdge(dimension.behavior.customBridgePrevious, v[id], dimension.navigationRules.sibling_sibling);
|
|
958
980
|
}
|
|
959
981
|
i++;
|
|
960
982
|
});
|
package/dist/index.mjs
CHANGED
|
@@ -701,6 +701,11 @@ var buildEdges = (options, nodes, dimensions) => {
|
|
|
701
701
|
});
|
|
702
702
|
dimensionKeys.forEach((s) => {
|
|
703
703
|
const dimension = dimensions[s];
|
|
704
|
+
const strat = dimension.behavior?.childmostNavigation || "within";
|
|
705
|
+
const matchByIndex = (i, _a, _b, c) => {
|
|
706
|
+
return c.values[Object.keys(c.values)[i]] || void 0;
|
|
707
|
+
};
|
|
708
|
+
const match = strat === "across" && dimension.behavior?.childmostMatching ? dimension.behavior?.childmostMatching : matchByIndex;
|
|
704
709
|
let extents2 = dimension.behavior?.extents || "circular";
|
|
705
710
|
if (!dimension.divisions) {
|
|
706
711
|
console.error(
|
|
@@ -763,69 +768,96 @@ var buildEdges = (options, nodes, dimensions) => {
|
|
|
763
768
|
} else {
|
|
764
769
|
createEdge(v[id], parentId, dimension.navigationRules.parent_child, "source");
|
|
765
770
|
}
|
|
766
|
-
if (
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
v[id],
|
|
770
|
-
division.values[valueKeys[0]][targetId],
|
|
771
|
-
dimension.navigationRules.sibling_sibling
|
|
772
|
-
);
|
|
773
|
-
} else if (i === valueKeys.length - 1 && extents2 === "bridgedCousins") {
|
|
774
|
-
if (j !== divisionKeys.length - 1) {
|
|
775
|
-
const targetId = typeof options.idKey === "function" ? options.idKey(dimension.divisions[divisionKeys[j + 1]].values[valueKeys[0]]) : options.idKey;
|
|
771
|
+
if (strat === "within") {
|
|
772
|
+
if (i === valueKeys.length - 1 && extents2 === "circular") {
|
|
773
|
+
const targetId = typeof options.idKey === "function" ? options.idKey(division.values[valueKeys[0]]) : options.idKey;
|
|
776
774
|
createEdge(
|
|
777
775
|
v[id],
|
|
778
|
-
|
|
776
|
+
division.values[valueKeys[0]][targetId],
|
|
779
777
|
dimension.navigationRules.sibling_sibling
|
|
780
778
|
);
|
|
781
|
-
} else {
|
|
782
|
-
|
|
779
|
+
} else if (i === valueKeys.length - 1 && extents2 === "bridgedCousins") {
|
|
780
|
+
if (j !== divisionKeys.length - 1) {
|
|
781
|
+
const targetId = typeof options.idKey === "function" ? options.idKey(
|
|
782
|
+
dimension.divisions[divisionKeys[j + 1]].values[valueKeys[0]]
|
|
783
|
+
) : options.idKey;
|
|
784
|
+
createEdge(
|
|
785
|
+
v[id],
|
|
786
|
+
dimension.divisions[divisionKeys[j + 1]].values[valueKeys[0]][targetId],
|
|
787
|
+
dimension.navigationRules.sibling_sibling
|
|
788
|
+
);
|
|
789
|
+
} else {
|
|
790
|
+
const targetId = typeof options.idKey === "function" ? options.idKey(dimension.divisions[divisionKeys[0]].values[valueKeys[0]]) : options.idKey;
|
|
791
|
+
createEdge(
|
|
792
|
+
v[id],
|
|
793
|
+
dimension.divisions[divisionKeys[0]].values[valueKeys[0]][targetId],
|
|
794
|
+
dimension.navigationRules.sibling_sibling
|
|
795
|
+
);
|
|
796
|
+
}
|
|
797
|
+
} else if (i === valueKeys.length - 1 && extents2 === "bridgedCustom") {
|
|
798
|
+
createEdge(
|
|
799
|
+
v[id],
|
|
800
|
+
dimension.behavior.customBridgePost,
|
|
801
|
+
dimension.navigationRules.sibling_sibling
|
|
802
|
+
);
|
|
803
|
+
} else if (i < valueKeys.length - 1) {
|
|
804
|
+
const targetId = typeof options.idKey === "function" ? options.idKey(division.values[valueKeys[i + 1]]) : options.idKey;
|
|
783
805
|
createEdge(
|
|
784
806
|
v[id],
|
|
785
|
-
|
|
807
|
+
division.values[valueKeys[i + 1]][targetId],
|
|
786
808
|
dimension.navigationRules.sibling_sibling
|
|
787
809
|
);
|
|
788
810
|
}
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
811
|
+
if (!i && extents2 === "bridgedCousins") {
|
|
812
|
+
if (j !== 0) {
|
|
813
|
+
const targetId = typeof options.idKey === "function" ? options.idKey(
|
|
814
|
+
dimension.divisions[divisionKeys[j - 1]].values[valueKeys[valueKeys.length - 1]]
|
|
815
|
+
) : options.idKey;
|
|
816
|
+
createEdge(
|
|
817
|
+
dimension.divisions[divisionKeys[j - 1]].values[valueKeys[valueKeys.length - 1]][targetId],
|
|
818
|
+
v[id],
|
|
819
|
+
dimension.navigationRules.sibling_sibling
|
|
820
|
+
);
|
|
821
|
+
} else {
|
|
822
|
+
const targetId = typeof options.idKey === "function" ? options.idKey(
|
|
823
|
+
dimension.divisions[divisionKeys[divisionKeys.length - 1]].values[valueKeys[valueKeys.length - 1]]
|
|
824
|
+
) : options.idKey;
|
|
825
|
+
createEdge(
|
|
826
|
+
dimension.divisions[divisionKeys[divisionKeys.length - 1]].values[valueKeys[valueKeys.length - 1]][targetId],
|
|
827
|
+
v[id],
|
|
828
|
+
dimension.navigationRules.sibling_sibling
|
|
829
|
+
);
|
|
830
|
+
}
|
|
831
|
+
} else if (!i && extents2 === "bridgedCustom") {
|
|
808
832
|
createEdge(
|
|
809
|
-
dimension.
|
|
833
|
+
dimension.behavior.customBridgePrevious,
|
|
810
834
|
v[id],
|
|
811
835
|
dimension.navigationRules.sibling_sibling
|
|
812
836
|
);
|
|
813
|
-
}
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
) : options.idKey;
|
|
837
|
+
}
|
|
838
|
+
} else {
|
|
839
|
+
if (j === divisionKeys.length - 1 && extents2 === "bridgedCustom") {
|
|
817
840
|
createEdge(
|
|
818
|
-
dimension.divisions[divisionKeys[divisionKeys.length - 1]].values[valueKeys[valueKeys.length - 1]][targetId],
|
|
819
841
|
v[id],
|
|
842
|
+
dimension.behavior.customBridgePost,
|
|
820
843
|
dimension.navigationRules.sibling_sibling
|
|
821
844
|
);
|
|
845
|
+
} else if (!j && extents2 === "bridgedCustom") {
|
|
846
|
+
createEdge(
|
|
847
|
+
dimension.behavior.customBridgePrevious,
|
|
848
|
+
v[id],
|
|
849
|
+
dimension.navigationRules.sibling_sibling
|
|
850
|
+
);
|
|
851
|
+
} else {
|
|
852
|
+
const targetDivision = j === divisionKeys.length - 1 && extents2 === "circular" ? dimension.divisions[divisionKeys[0]] : dimension.divisions[divisionKeys[j + 1]];
|
|
853
|
+
if (targetDivision) {
|
|
854
|
+
const target = match(i, v[id], division, targetDivision);
|
|
855
|
+
if (target) {
|
|
856
|
+
const targetId = typeof options.idKey === "function" ? options.idKey(target) : options.idKey;
|
|
857
|
+
createEdge(v[id], target[targetId], dimension.navigationRules.sibling_sibling);
|
|
858
|
+
}
|
|
859
|
+
}
|
|
822
860
|
}
|
|
823
|
-
} else if (!i && extents2 === "bridgedCustom") {
|
|
824
|
-
createEdge(
|
|
825
|
-
dimension.behavior.customBridgePrevious,
|
|
826
|
-
v[id],
|
|
827
|
-
dimension.navigationRules.sibling_sibling
|
|
828
|
-
);
|
|
829
861
|
}
|
|
830
862
|
i++;
|
|
831
863
|
});
|
|
@@ -172,6 +172,8 @@ export type DimensionBehavior = {
|
|
|
172
172
|
extents: ExtentType;
|
|
173
173
|
customBridgePrevious?: NodeId;
|
|
174
174
|
customBridgePost?: NodeId;
|
|
175
|
+
childmostNavigation?: ChildmostNavigationStrategy;
|
|
176
|
+
childmostMatching?: ChildmostMatchingStrategy;
|
|
175
177
|
};
|
|
176
178
|
export type Level1Behavior = {
|
|
177
179
|
extents: Level0ExtentType;
|
|
@@ -209,6 +211,7 @@ export type DynamicRenderIdKey = ((d?: DatumObject) => string) | string;
|
|
|
209
211
|
export type DynamicDimensionId = ((d?: DimensionDatum, a?: GenericDataset) => NodeId) | NodeId;
|
|
210
212
|
export type DynamicDimensionRenderId = ((d?: DimensionDatum, a?: GenericDataset) => RenderId) | RenderId;
|
|
211
213
|
export type NumericallySubdivide = ((d?: DimensionKey, n?: Nodes) => number) | number;
|
|
214
|
+
export type ChildmostMatchingStrategy = (index?: number, currentDivisionChild?: DatumObject, currentDivision?: DivisionObject, nextDivision?: DivisionObject) => DatumObject | undefined;
|
|
212
215
|
export type AdjustingFunction = (d: Dimensions) => Dimensions;
|
|
213
216
|
export type SortingFunction = (a: DatumObject, b: DatumObject, c?: any) => number;
|
|
214
217
|
export type FilteringFunction = (a: DatumObject, b?: any) => boolean;
|
|
@@ -224,6 +227,7 @@ export type Direction = 'target' | 'source';
|
|
|
224
227
|
export type RenderingStrategy = 'outlineEach' | 'convexHull' | 'singleSquare' | 'custom';
|
|
225
228
|
export type DimensionType = 'numerical' | 'categorical';
|
|
226
229
|
export type ExtentType = 'circular' | 'terminal' | 'bridgedCousins' | 'bridgedCustom';
|
|
230
|
+
export type ChildmostNavigationStrategy = 'within' | 'across';
|
|
227
231
|
export type Level0ExtentType = 'circular' | 'terminal' | 'bridgedCustom';
|
|
228
232
|
export type DataType = 'vega-lite' | 'vl' | 'Vega-Lite' | 'generic' | 'default';
|
|
229
233
|
export type DimensionLevel = 0 | 1 | 2 | 3;
|
package/dist/structure.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function e(e,i){if(i==null||i>e.length)i=e.length;for(var n=0,t=new Array(i);n<i;n++)t[n]=e[n];return t}function i(i){if(Array.isArray(i))return e(i)}function n(e,i,n){if(i in e){Object.defineProperty(e,i,{value:n,enumerable:true,configurable:true,writable:true})}else{e[i]=n}return e}function t(e){if(typeof Symbol!=="undefined"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function o(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function r(e){for(var i=1;i<arguments.length;i++){var t=arguments[i]!=null?arguments[i]:{};var o=Object.keys(t);if(typeof Object.getOwnPropertySymbols==="function"){o=o.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))}o.forEach(function(i){n(e,i,t[i])})}return e}function s(e,i){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);if(i){t=t.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})}n.push.apply(n,t)}return n}function a(e,i){i=i!=null?i:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(e,Object.getOwnPropertyDescriptors(i))}else{s(Object(i)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(i,n))})}return e}function d(e){return i(e)||t(e)||c(e)||o()}function u(e){"@swc/helpers - typeof";return e&&typeof Symbol!=="undefined"&&e.constructor===Symbol?"symbol":typeof e}function c(i,n){if(!i)return;if(typeof i==="string")return e(i,n);var t=Object.prototype.toString.call(i).slice(8,-1);if(t==="Object"&&i.constructor)t=i.constructor.name;if(t==="Map"||t==="Set")return Array.from(t);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return e(i,n)}var l=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var y=function(e,i){for(var n in i)l(e,n,{get:i[n],enumerable:!0})},p=function(e,i,n,t){var o=true,r=false,s=undefined;if(i&&typeof i=="object"||typeof i=="function")try{var a=function(){var o=u.value;!g.call(e,o)&&o!==n&&l(e,o,{get:function(){return i[o]},enumerable:!(t=v(i,o))||t.enumerable})};for(var d=f(i)[Symbol.iterator](),u;!(o=(u=d.next()).done);o=true)a()}catch(e){r=true;s=e}finally{try{if(!o&&d.return!=null){d.return()}}finally{if(r){throw s}}}return e};var m=function(e){return p(l({},"__esModule",{value:!0}),e)};var h={};y(h,{addSimpleDataIDs:function(){return _},buildEdges:function(){return P},buildNodeStructureFromVegaLite:function(){return S},buildNodes:function(){return x},buildRules:function(){return L},buildStructure:function(){return F},default:function(){return w},scaffoldDimensions:function(){return D}});module.exports=m(h);var b={Escape:!0,Enter:!0,Backspace:!0,ArrowLeft:!0,ArrowRight:!0,ArrowUp:!0,ArrowDown:!0};var O=["KeyW","KeyJ","LeftBracket","RightBracket","Slash","Backslash"];var k=[["LeftBracket","RightBracket"],["Slash","Backslash"]],E={left:{key:"ArrowLeft",direction:"source"},right:{key:"ArrowRight",direction:"target"},up:{key:"ArrowUp",direction:"source"},down:{key:"ArrowDown",direction:"target"},child:{key:"Enter",direction:"target"},parent:{key:"Backspace",direction:"source"},backward:{key:"Comma",direction:"source"},forward:{key:"Period",direction:"target"},previous:{key:"Semicolon",direction:"source"},next:{key:"Quote",direction:"target"},exit:{key:"Escape",direction:"target"},help:{key:"KeyY",direction:"target"},undo:{key:"KeyZ",direction:"target"}},K=[["left","right"],["up","down"],["backward","forward"],["previous","next"]];var I={right:{key:"ArrowRight",direction:"target"},left:{key:"ArrowLeft",direction:"source"},down:{key:"ArrowDown",direction:"target"},up:{key:"ArrowUp",direction:"source"},child:{key:"Enter",direction:"target"},parent:{key:"Backspace",direction:"source"},exit:{key:"Escape",direction:"target"},undo:{key:"Period",direction:"target"},legend:{key:"KeyL",direction:"target"}};var R=function(e,i){var n=Object.keys(e),t="";return n.forEach(function(n){t+="".concat(i&&i.omitKeyNames?"":n+": ").concat(e[n],". ")}),t+=i&&i.semanticLabel||"Data point.",t},j=function(e){return"_"+e.replace(/[^a-zA-Z0-9_-]+/g,"_")};var w=function(e){return e.dataType==="vega-lite"||e.dataType==="vl"||e.dataType==="Vega-Lite"?S(e):F(e)},S=function(e){var i=I,n={},t={},o={},r=0,s=e.groupInclusionCriteria?e.groupInclusionCriteria:function(){return!0},a=e.itemInclusionCriteria?e.itemInclusionCriteria:function(){return!0},d=e.datumInclusionCriteria?e.datumInclusionCriteria:function(){return!0},u=e.vegaLiteView._renderer._origin,c=e.vegaLiteView._scenegraph.root.items[0].mark.items[0],l=function(e,i){if(e["data-navigator-id"])return e["data-navigator-id"];var n="dn-node-".concat(i,"-").concat(r);return r++,e["data-navigator-id"]=n,n},v=function(i){var o=n[i],r=o.index,s=o.level,a=o.parent,d=[],u=a.items[r-1];if(u){var c=l(u,s);if(n[c]){var v="".concat(c,"-").concat(o.id);d.push(v),t[v]||(t[v]={source:c,target:o.id,navigationRules:["left","right"]})}}var f=a.items[r+1];if(f){var g=l(f,s);if(n[g]){var y="".concat(o.id,"-").concat(g);d.push(y),t[y]||(t[y]={source:o.id,target:g,navigationRules:["left","right"]})}}if(s==="group"&&a.items[r].items){var p=(a.items[r].items[0].mark.items[0].items||a.items[r].items)[0],m=l(p,"item");if(n[m]){var h="".concat(o.id,"-").concat(m);d.push(h),t[h]||(t[h]={source:o.id,target:m,navigationRules:["parent","child"]})}}else if(s==="item"){var b=l(a,"group");if(n[b]){var O="".concat(b,"-").concat(o.id);d.push(O),t[O]||(t[O]={source:b,target:o.id,navigationRules:["parent","child"]})}}return e.exitFunction&&(d.push("any-exit"),t["any-exit"]||(t["any-exit"]={source:e.getCurrent,target:e.exitFunction,navigationRules:["exit"]})),d.push("any-undo"),t["any-undo"]||(t["any-undo"]={source:e.getCurrent,target:e.getPrevious,navigationRules:["undo"]}),d},f=function(i,t,r,s,a){var u=l(i,t),c="render-"+u,v=r||[0,0];n[u]={},n[u].d={},n[u].id=u,n[u].renderId=c,n[u].index=s,n[u].level=t,n[u].parent=a,o[c]={},o[c].renderId=c,o[c].spatialProperties={},o[c].spatialProperties.x=i.bounds.x1+v[0],o[c].spatialProperties.y=i.bounds.y1+v[1],o[c].spatialProperties.width=i.bounds.x2-i.bounds.x1,o[c].spatialProperties.height=i.bounds.y2-i.bounds.y1,o[c].cssClass="dn-vega-lite-node",i.datum&&Object.keys(i.datum).forEach(function(o){var r=i.datum[o];d(o,r,i.datum,t,e.vegaLiteSpec)&&(n[u].d[e.keyRenamingHash&&e.keyRenamingHash[o]?e.keyRenamingHash[o]:o]=r)}),o[c].semantics={},o[c].semantics.label=e.nodeDescriber?e.nodeDescriber(n[u].d,i,t):R(n[u].d)},g=0;return c.items.forEach(function(i){if(s(i,g,e.vegaLiteSpec)){f(i,"group",u,g,c);var n=0,t=i.items[0].mark.items[0].items?i.items[0].mark.items[0]:i;t.items.forEach(function(o){a(o,n,i,e.vegaLiteSpec)&&f(o,"item",u,n,t),n++})}g++}),Object.keys(n).forEach(function(e){n[e].edges=v(e)}),{nodes:n,edges:t,elementData:o,navigationRules:i}},_=function(e){var i=0,n={};e.data.forEach(function(t){var o=typeof e.idKey=="function"?e.idKey(t):e.idKey;t[o]="_"+i,e.keysForIdGeneration&&e.keysForIdGeneration.forEach(function(e){e in t&&(typeof t[e]=="string"?(n[e]||(n[e]=0),n[t[e]]||(n[t[e]]=0),t[o]+="_"+e+n[e]+"_"+t[e]+n[t[e]],n[e]++,n[t[e]]++):(n[e]||(n[e]=0),t[o]+="_"+e+n[e],n[e]++))}),i++})},x=function(e){var i={};return e.data.forEach(function(n){e.idKey||console.error("Building nodes. A key string must be supplied in options.idKey to specify the id keys of every node.");var t=typeof e.idKey=="function"?e.idKey(n):e.idKey,o=n[t];if(!o){console.error("Building nodes. Each datum in options.data must contain an id. When matching the id key string ".concat(t,", this datum has no id: ").concat(JSON.stringify(n),"."));return}if(i[o]){console.error("Building nodes. Each id for data in options.data must be unique. This id is not unique: ".concat(o,"."));return}else{var r=typeof e.renderIdKey=="function"?e.renderIdKey(n):e.renderIdKey;i[o]={id:o,edges:[],renderId:r?n[r]||"":n.renderIdKey||"",data:n}}}),i},D=function(e,i){var n,t;var o={};if((t=e.dimensions)===null||t===void 0?void 0:(n=t.parentOptions)===null||n===void 0?void 0:n.addLevel0){var s=e.dimensions.parentOptions.addLevel0;i[s.id]=a(r({},s),{dimensionLevel:0})}var c=d(K),l=function(e,i){var n=i.numericalExtents[0],t=i.numericalExtents[1];i.numericalExtents[0]=n<e?n:e,i.numericalExtents[1]=t>e?t:e};return e.data.forEach(function(n){var t=e.dimensions.values||[],s=0;t.forEach(function(t){if(!t.dimensionKey){console.error("Building nodes, parsing dimensions. Each dimension in options.dimensions must contain a dimensionKey. This dimension has no key: ".concat(JSON.stringify(t),"."));return}if(t.dimensionKey in n){var a;var v=n[t.dimensionKey],f=typeof((a=t.operations)===null||a===void 0?void 0:a.filterFunction)=="function"?t.operations.filterFunction(n,t):!0;if(v!==void 0&&f){if(t.type||(t.type=(typeof v==="undefined"?"undefined":u(v))=="bigint"||typeof v=="number"?"numerical":"categorical"),!o[t.dimensionKey]){var g,y;var p=typeof t.nodeId=="function"?t.nodeId(t,e.data):t.nodeId||j(t.dimensionKey),m=typeof t.renderId=="function"?t.renderId(t,e.data):t.renderId||p;o[t.dimensionKey]={dimensionKey:t.dimensionKey,nodeId:p,divisions:{},numericalExtents:[1/0,-1/0],type:t.type,operations:{compressSparseDivisions:((g=t.operations)===null||g===void 0?void 0:g.compressSparseDivisions)||!1,sortFunction:((y=t.operations)===null||y===void 0?void 0:y.sortFunction)||void 0},behavior:t.behavior||{extents:"circular"},navigationRules:t.navigationRules||{sibling_sibling:c.length?d(c.shift()):["previous_"+t.dimensionKey,"next_"+t.dimensionKey],parent_child:["parent_"+t.dimensionKey,"child"]}},i[p]={id:p,renderId:m,derivedNode:t.dimensionKey,edges:[],dimensionLevel:1,data:o[t.dimensionKey],renderingStrategy:t.renderingStrategy||"singleSquare"}}var h=o[t.dimensionKey],b=null;if(t.type==="categorical"){var O;var k=typeof((O=t.divisionOptions)===null||O===void 0?void 0:O.divisionNodeIds)=="function"?t.divisionOptions.divisionNodeIds(t.dimensionKey,v,s):j(h.nodeId+"_"+v);if(b=h.divisions[k],!b){var E,K,I;b=h.divisions[k]={id:k,sortFunction:((E=t.divisionOptions)===null||E===void 0?void 0:E.sortFunction)||void 0,values:{}};var R=typeof((K=t.divisionOptions)===null||K===void 0?void 0:K.divisionRenderIds)=="function"?t.divisionOptions.divisionRenderIds(t.dimensionKey,v,s):k;i[k]={id:k,renderId:R,derivedNode:t.dimensionKey,edges:[],dimensionLevel:2,data:r({},b),renderingStrategy:((I=t.divisionOptions)===null||I===void 0?void 0:I.renderingStrategy)||"singleSquare"},i[k].data[t.dimensionKey]=v}}else{var w;b=h.divisions[h.nodeId],b||(b=h.divisions[h.nodeId]={id:h.nodeId,sortFunction:((w=t.divisionOptions)===null||w===void 0?void 0:w.sortFunction)||void 0,values:{}}),t.operations||(t.operations={});var S=t.operations.createNumericalSubdivisions;h.subdivisions=typeof S=="number"&&S<1?1:S||1,S!==1&&(h.divisionOptions||(h.divisionOptions=t.divisionOptions),l(v,h))}var _=typeof e.idKey=="function"?e.idKey(n):e.idKey;b.values[n[_]]=n}}s++})}),Object.keys(o).forEach(function(e){var n;var t=o[e],r=t.divisions;if(t.type==="numerical"){r[t.nodeId].values=Object.fromEntries(Object.entries(r[t.nodeId].values).sort(function(i,n){var o;return typeof((o=t.operations)===null||o===void 0?void 0:o.sortFunction)=="function"?t.operations.sortFunction(i[1],n[1],t):i[1][e]-n[1][e]}));var s=r[t.nodeId].values;if(t.numericalExtents[0]!==1/0&&t.subdivisions!==1){var a=Object.keys(s),d=typeof t.subdivisions=="function"?t.subdivisions(e,s):t.subdivisions,u=(t.numericalExtents[1]-t.numericalExtents[0])/d,c=t.numericalExtents[0]+u,l=0,v=0;for(c=t.numericalExtents[0]+u;c<=t.numericalExtents[1];c+=u){var f,g,y,p;var m=typeof((f=t.divisionOptions)===null||f===void 0?void 0:f.divisionNodeIds)=="function"?t.divisionOptions.divisionNodeIds(e,c,c):t.nodeId+"_"+c;t.divisions[m]={id:m,sortFunction:((g=t.divisionOptions)===null||g===void 0?void 0:g.sortFunction)||void 0,values:{}};var h=typeof((y=t.divisionOptions)===null||y===void 0?void 0:y.divisionRenderIds)=="function"?t.divisionOptions.divisionRenderIds(e,c,c):m;i[m]={id:m,renderId:h,derivedNode:e,edges:[],data:t.divisions[m],dimensionLevel:2,renderingStrategy:((p=t.divisionOptions)===null||p===void 0?void 0:p.renderingStrategy)||"singleSquare"};var b=!1;for(;!b&&v<a.length;){var O=s[a[v]];O[e]<=c?t.divisions[m].values[O.id]=O:(c+=u,b=!0),v++}l++}delete r[e]}}else typeof((n=t.operations)===null||n===void 0?void 0:n.sortFunction)=="function"&&(t.divisions=Object.fromEntries(Object.entries(r).sort(function(e,i){return t.operations.sortFunction(e[1],i[1],t)})));Object.keys(t.divisions).forEach(function(e){var i=t.divisions[e];typeof i.sortFunction=="function"&&(i.values=Object.fromEntries(Object.entries(i.values).sort(function(e,n){return i.sortFunction(e[1],n[1],i)})))})}),Object.keys(o).forEach(function(e){var n=o[e];if(n.operations.compressSparseDivisions){var t=Object.keys(n.divisions),s={},a=!0;if(t.forEach(function(e){var i=n.divisions[e],t=Object.keys(i.values);t.length<=1?t.forEach(function(e){s[e]=r({},i.values[e])}):a=!1}),a){var d={id:n.nodeId,values:s};t.forEach(function(e){delete i[e]}),n.divisions={},n.divisions[n.nodeId]=d}}}),e.dimensions.adjustDimensions&&(o=e.dimensions.adjustDimensions(o)),o},P=function(e,i,n){var t={},o=function(e,n){i[e].edges.indexOf(n)===-1&&i[e].edges.push(n)},r=function(i,n,r,s){var a="".concat(i,"-").concat(n),u=e.useDirectedEdges?"".concat(n,"-").concat(a):a,c=!s||s==="source",l=!s||s==="target",v=function(e){var o;t[e]?(o=t[e].navigationRules).push.apply(o,d(r||[])):t[e]={source:i,target:n,navigationRules:r?d(r):[]}};v(a),e.useDirectedEdges&&l&&v(u),c&&o(i,a),l&&o(n,u)};if(n&&Object.keys(n).length){var s,a,u,c,l,v,f,g,y,p;var m=Object.keys(n),h=(u=e.dimensions)===null||u===void 0?void 0:(a=u.parentOptions)===null||a===void 0?void 0:(s=a.level1Options)===null||s===void 0?void 0:s.order,b=h||m,O=0,k=((c=e.dimensions)===null||c===void 0?void 0:c.parentOptions)||{},E=((v=k.level1Options)===null||v===void 0?void 0:(l=v.behavior)===null||l===void 0?void 0:l.extents)||"terminal",K=k.addLevel0,I=K?((g=k.level1Options)===null||g===void 0?void 0:(f=g.navigationRules)===null||f===void 0?void 0:f.parent_child)||["parent","child"]:[],R=((p=k.level1Options)===null||p===void 0?void 0:(y=p.navigationRules)===null||y===void 0?void 0:y.sibling_sibling)||["left","right"],j=typeof b[0]=="string"?h?i[b[0]]:i[n[b[0]].nodeId]:b[0];K&&r(K.id,j.id,I,"source"),b.forEach(function(t){var o=typeof t=="string"?h?i[t]:i[n[t].nodeId]:t;if(o===t&&!i[o.id]&&(i[o.id]=o),K&&(e.useDirectedEdges?r(o.id,K.id,I,"source"):r(K.id,o.id,I,"target")),O===b.length-1&&E==="circular")r(o.id,j.id,R);else if(O===b.length-1&&E==="bridgedCustom")r(o.id,k.level1Options.behavior.customBridgePost,R);else if(O<b.length-1){var s=typeof b[O+1]=="string"?h?i[b[O+1]]:i[n[b[O+1]].nodeId]:b[O+1];r(o.id,s.id,R)}!O&&E==="bridgedCustom"&&r(k.level1Options.behavior.customBridgePost,o.id,R),O++}),m.forEach(function(i){var t;var o=n[i],s=((t=o.behavior)===null||t===void 0?void 0:t.extents)||"circular";o.divisions||console.error("Parsing dimensions. The dimension using the key ".concat(i," is missing the divisions property. dimension.divisions should be supplied. ").concat(JSON.stringify(o),"."));var a=Object.keys(o.divisions),d=o.divisions[a[0]];if(a.length!==1)r(o.nodeId,d.id,o.navigationRules.parent_child,"source");else{var u=Object.keys(d.values),c=typeof e.idKey=="function"?e.idKey(d.values[u[0]]):e.idKey;r(o.nodeId,d.values[u[0]][c],o.navigationRules.parent_child,"source")}var l=0;a.forEach(function(i){var n=o.divisions[i];l===a.length-1&&(s==="circular"||s==="bridgedCousins"||s==="bridgedCustom")?r(n.id,o.divisions[a[0]].id,o.navigationRules.sibling_sibling):l<a.length-1&&r(n.id,o.divisions[a[l+1]].id,o.navigationRules.sibling_sibling);var t=Object.keys(n.values);e.useDirectedEdges?r(n.id,o.nodeId,o.navigationRules.parent_child,"source"):r(o.nodeId,n.id,o.navigationRules.parent_child,"target");var d=typeof e.idKey=="function"?e.idKey(n.values[t[0]]):e.idKey;r(n.id,n.values[t[0]][d],o.navigationRules.parent_child,"source");var u=0;t.length>1&&t.forEach(function(i){var d=n.values[i],c=typeof e.idKey=="function"?e.idKey(d):e.idKey,v=a.length!==1?n.id:o.nodeId;if(e.useDirectedEdges?r(d[c],v,o.navigationRules.parent_child,"source"):r(v,d[c],o.navigationRules.parent_child,"target"),u===t.length-1&&s==="circular"){var f=typeof e.idKey=="function"?e.idKey(n.values[t[0]]):e.idKey;r(d[c],n.values[t[0]][f],o.navigationRules.sibling_sibling)}else if(u===t.length-1&&s==="bridgedCousins")if(l!==a.length-1){var g=typeof e.idKey=="function"?e.idKey(o.divisions[a[l+1]].values[t[0]]):e.idKey;r(d[c],o.divisions[a[l+1]].values[t[0]][g],o.navigationRules.sibling_sibling)}else{var y=typeof e.idKey=="function"?e.idKey(o.divisions[a[0]].values[t[0]]):e.idKey;r(d[c],o.divisions[a[0]].values[t[0]][y],o.navigationRules.sibling_sibling)}else if(u===t.length-1&&s==="bridgedCustom")r(d[c],o.behavior.customBridgePost,o.navigationRules.sibling_sibling);else if(u<t.length-1){var p=typeof e.idKey=="function"?e.idKey(n.values[t[u+1]]):e.idKey;r(d[c],n.values[t[u+1]][p],o.navigationRules.sibling_sibling)}if(!u&&s==="bridgedCousins")if(l!==0){var m=typeof e.idKey=="function"?e.idKey(o.divisions[a[l-1]].values[t[t.length-1]]):e.idKey;r(o.divisions[a[l-1]].values[t[t.length-1]][m],d[c],o.navigationRules.sibling_sibling)}else{var h=typeof e.idKey=="function"?e.idKey(o.divisions[a[a.length-1]].values[t[t.length-1]]):e.idKey;r(o.divisions[a[a.length-1]].values[t[t.length-1]][h],d[c],o.navigationRules.sibling_sibling)}else!u&&s==="bridgedCustom"&&r(o.behavior.customBridgePrevious,d[c],o.navigationRules.sibling_sibling);u++}),l++})})}return Object.keys(i).forEach(function(n){var o;var r=i[n];((o=e.genericEdges)===null||o===void 0?void 0:o.length)&&e.genericEdges.forEach(function(e){t[e.edgeId]||(t[e.edgeId]=e.edge),(!e.conditional||e.conditional&&e.conditional(r,e))&&r.edges.push(e.edgeId)})}),t},L=function(e,i,n){var t=e.navigationRules;if(!t){var o=Object.keys(n||{});o.length>6&&console.error("Building navigationRules. Dimension count is too high to automatically generate key commands. It is recommend you reduce your dimensions to 6 or fewer for end-user experience. If not, you must provide your own navigation rules in options.navigationRules. Details: Count is ".concat(o.length,". Dimensions counted: ").concat(o.join(", "),"."));var s={},a={},u={},c=d(k),l=d(O),v=function(i,n){var t=i&&n,o=!1,v=!1;if((s[i]||a[i])&&(a[i]=r({},s[i]),o=!0),n&&(s[n]||a[n])&&(a[n]=r({},s[n]),v=!0),t&&!o&&!v){c.length||console.error("Building navigationRules. Dimension count is too high to automatically generate key commands, we have run out of keyboard key pairs to assign. You must either provide your own navigation rules in options.navigationRules, provide rules when generating dimensions, or reduce dimension count.");var f=d(c.shift());l.splice(l.indexOf(f[0]),1),l.splice(l.indexOf(f[1]),1),a[i]={direction:e.useDirectedEdges?"target":"source",key:f[0]},a[n]={direction:"target",key:f[1]}}else{if(!a[i]&&l.length){var g=l.shift(),y=[];c.forEach(function(e){g!==e[0]&&g!==e[1]&&y.push(e)}),c=y,a[i]={direction:e.useDirectedEdges?"target":"source",key:g}}if(n&&!a[n]&&l.length){var p=l.shift(),m=[];c.forEach(function(e){p!==e[0]&&p!==e[1]&&m.push(e)}),c=m,a[n]={direction:"target",key:p}}l.length||(a[i]||(u[i]=i),n&&!a[n]&&(u[n]=n))}};if(Object.keys(E).forEach(function(i){var n=r({},E[i]);e.useDirectedEdges&&(n.direction="target"),s[i]=n}),o.length){var f,g;if((g=e.dimensions)===null||g===void 0?void 0:(f=g.parentOptions)===null||f===void 0?void 0:f.addLevel0){var y,p;var m=((p=e.dimensions.parentOptions.level1Options)===null||p===void 0?void 0:(y=p.navigationRules)===null||y===void 0?void 0:y.parent_child)||["parent","child"];v(m[0],m[1])}o.forEach(function(e){var i=n[e].navigationRules.parent_child,t=n[e].navigationRules.sibling_sibling;v(i[0],i[1]),v(t[0],t[1])})}if(Object.keys(i).forEach(function(e){i[e].navigationRules.forEach(function(e){a[e]||v(e)})}),Object.keys(u).length){var h={};Object.keys(a).forEach(function(e){h[a[e].key]=a[e].key}),Object.keys(s).forEach(function(e){!h[s[e].key]&&!b[s[e].key]&&l.push(s[e].key)});var K=r({},u);u={},Object.keys(K).forEach(function(e){v(e)}),Object.keys(u).length&&console.error("Building navigationRules. There are no more keys left to assign automatically. Recommended fixes: use fewer dimensions, use fewer GenericEdges, or build your own navigationRules. Rules remaining without keyboard keys: ".concat(Object.keys(u).join(", "),"."))}t=a}return t},F=function(e){e.addIds&&_(e);var i=x(e),n=D(e,i),t=P(e,i,n),o=L(e,t,n);return{nodes:i,edges:t,dimensions:n,navigationRules:o}};0&&(module.exports={addSimpleDataIDs:addSimpleDataIDs,buildEdges:buildEdges,buildNodeStructureFromVegaLite:buildNodeStructureFromVegaLite,buildNodes:buildNodes,buildRules:buildRules,buildStructure:buildStructure,scaffoldDimensions:scaffoldDimensions});
|
|
1
|
+
function e(e,i){if(i==null||i>e.length)i=e.length;for(var n=0,t=new Array(i);n<i;n++)t[n]=e[n];return t}function i(i){if(Array.isArray(i))return e(i)}function n(e,i,n){if(i in e){Object.defineProperty(e,i,{value:n,enumerable:true,configurable:true,writable:true})}else{e[i]=n}return e}function t(e){if(typeof Symbol!=="undefined"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function o(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function r(e){for(var i=1;i<arguments.length;i++){var t=arguments[i]!=null?arguments[i]:{};var o=Object.keys(t);if(typeof Object.getOwnPropertySymbols==="function"){o=o.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))}o.forEach(function(i){n(e,i,t[i])})}return e}function s(e,i){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);if(i){t=t.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})}n.push.apply(n,t)}return n}function a(e,i){i=i!=null?i:{};if(Object.getOwnPropertyDescriptors){Object.defineProperties(e,Object.getOwnPropertyDescriptors(i))}else{s(Object(i)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(i,n))})}return e}function d(e){return i(e)||t(e)||c(e)||o()}function u(e){"@swc/helpers - typeof";return e&&typeof Symbol!=="undefined"&&e.constructor===Symbol?"symbol":typeof e}function c(i,n){if(!i)return;if(typeof i==="string")return e(i,n);var t=Object.prototype.toString.call(i).slice(8,-1);if(t==="Object"&&i.constructor)t=i.constructor.name;if(t==="Map"||t==="Set")return Array.from(t);if(t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return e(i,n)}var l=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var y=function(e,i){for(var n in i)l(e,n,{get:i[n],enumerable:!0})},p=function(e,i,n,t){var o=true,r=false,s=undefined;if(i&&typeof i=="object"||typeof i=="function")try{var a=function(){var o=u.value;!g.call(e,o)&&o!==n&&l(e,o,{get:function(){return i[o]},enumerable:!(t=v(i,o))||t.enumerable})};for(var d=f(i)[Symbol.iterator](),u;!(o=(u=d.next()).done);o=true)a()}catch(e){r=true;s=e}finally{try{if(!o&&d.return!=null){d.return()}}finally{if(r){throw s}}}return e};var m=function(e){return p(l({},"__esModule",{value:!0}),e)};var h={};y(h,{addSimpleDataIDs:function(){return S},buildEdges:function(){return P},buildNodeStructureFromVegaLite:function(){return _},buildNodes:function(){return x},buildRules:function(){return L},buildStructure:function(){return F},default:function(){return w},scaffoldDimensions:function(){return D}});module.exports=m(h);var b={Escape:!0,Enter:!0,Backspace:!0,ArrowLeft:!0,ArrowRight:!0,ArrowUp:!0,ArrowDown:!0};var O=["KeyW","KeyJ","LeftBracket","RightBracket","Slash","Backslash"];var k=[["LeftBracket","RightBracket"],["Slash","Backslash"]],E={left:{key:"ArrowLeft",direction:"source"},right:{key:"ArrowRight",direction:"target"},up:{key:"ArrowUp",direction:"source"},down:{key:"ArrowDown",direction:"target"},child:{key:"Enter",direction:"target"},parent:{key:"Backspace",direction:"source"},backward:{key:"Comma",direction:"source"},forward:{key:"Period",direction:"target"},previous:{key:"Semicolon",direction:"source"},next:{key:"Quote",direction:"target"},exit:{key:"Escape",direction:"target"},help:{key:"KeyY",direction:"target"},undo:{key:"KeyZ",direction:"target"}},K=[["left","right"],["up","down"],["backward","forward"],["previous","next"]];var I={right:{key:"ArrowRight",direction:"target"},left:{key:"ArrowLeft",direction:"source"},down:{key:"ArrowDown",direction:"target"},up:{key:"ArrowUp",direction:"source"},child:{key:"Enter",direction:"target"},parent:{key:"Backspace",direction:"source"},exit:{key:"Escape",direction:"target"},undo:{key:"Period",direction:"target"},legend:{key:"KeyL",direction:"target"}};var R=function(e,i){var n=Object.keys(e),t="";return n.forEach(function(n){t+="".concat(i&&i.omitKeyNames?"":n+": ").concat(e[n],". ")}),t+=i&&i.semanticLabel||"Data point.",t},j=function(e){return"_"+e.replace(/[^a-zA-Z0-9_-]+/g,"_")};var w=function(e){return e.dataType==="vega-lite"||e.dataType==="vl"||e.dataType==="Vega-Lite"?_(e):F(e)},_=function(e){var i=I,n={},t={},o={},r=0,s=e.groupInclusionCriteria?e.groupInclusionCriteria:function(){return!0},a=e.itemInclusionCriteria?e.itemInclusionCriteria:function(){return!0},d=e.datumInclusionCriteria?e.datumInclusionCriteria:function(){return!0},u=e.vegaLiteView._renderer._origin,c=e.vegaLiteView._scenegraph.root.items[0].mark.items[0],l=function(e,i){if(e["data-navigator-id"])return e["data-navigator-id"];var n="dn-node-".concat(i,"-").concat(r);return r++,e["data-navigator-id"]=n,n},v=function(i){var o=n[i],r=o.index,s=o.level,a=o.parent,d=[],u=a.items[r-1];if(u){var c=l(u,s);if(n[c]){var v="".concat(c,"-").concat(o.id);d.push(v),t[v]||(t[v]={source:c,target:o.id,navigationRules:["left","right"]})}}var f=a.items[r+1];if(f){var g=l(f,s);if(n[g]){var y="".concat(o.id,"-").concat(g);d.push(y),t[y]||(t[y]={source:o.id,target:g,navigationRules:["left","right"]})}}if(s==="group"&&a.items[r].items){var p=(a.items[r].items[0].mark.items[0].items||a.items[r].items)[0],m=l(p,"item");if(n[m]){var h="".concat(o.id,"-").concat(m);d.push(h),t[h]||(t[h]={source:o.id,target:m,navigationRules:["parent","child"]})}}else if(s==="item"){var b=l(a,"group");if(n[b]){var O="".concat(b,"-").concat(o.id);d.push(O),t[O]||(t[O]={source:b,target:o.id,navigationRules:["parent","child"]})}}return e.exitFunction&&(d.push("any-exit"),t["any-exit"]||(t["any-exit"]={source:e.getCurrent,target:e.exitFunction,navigationRules:["exit"]})),d.push("any-undo"),t["any-undo"]||(t["any-undo"]={source:e.getCurrent,target:e.getPrevious,navigationRules:["undo"]}),d},f=function(i,t,r,s,a){var u=l(i,t),c="render-"+u,v=r||[0,0];n[u]={},n[u].d={},n[u].id=u,n[u].renderId=c,n[u].index=s,n[u].level=t,n[u].parent=a,o[c]={},o[c].renderId=c,o[c].spatialProperties={},o[c].spatialProperties.x=i.bounds.x1+v[0],o[c].spatialProperties.y=i.bounds.y1+v[1],o[c].spatialProperties.width=i.bounds.x2-i.bounds.x1,o[c].spatialProperties.height=i.bounds.y2-i.bounds.y1,o[c].cssClass="dn-vega-lite-node",i.datum&&Object.keys(i.datum).forEach(function(o){var r=i.datum[o];d(o,r,i.datum,t,e.vegaLiteSpec)&&(n[u].d[e.keyRenamingHash&&e.keyRenamingHash[o]?e.keyRenamingHash[o]:o]=r)}),o[c].semantics={},o[c].semantics.label=e.nodeDescriber?e.nodeDescriber(n[u].d,i,t):R(n[u].d)},g=0;return c.items.forEach(function(i){if(s(i,g,e.vegaLiteSpec)){f(i,"group",u,g,c);var n=0,t=i.items[0].mark.items[0].items?i.items[0].mark.items[0]:i;t.items.forEach(function(o){a(o,n,i,e.vegaLiteSpec)&&f(o,"item",u,n,t),n++})}g++}),Object.keys(n).forEach(function(e){n[e].edges=v(e)}),{nodes:n,edges:t,elementData:o,navigationRules:i}},S=function(e){var i=0,n={};e.data.forEach(function(t){var o=typeof e.idKey=="function"?e.idKey(t):e.idKey;t[o]="_"+i,e.keysForIdGeneration&&e.keysForIdGeneration.forEach(function(e){e in t&&(typeof t[e]=="string"?(n[e]||(n[e]=0),n[t[e]]||(n[t[e]]=0),t[o]+="_"+e+n[e]+"_"+t[e]+n[t[e]],n[e]++,n[t[e]]++):(n[e]||(n[e]=0),t[o]+="_"+e+n[e],n[e]++))}),i++})},x=function(e){var i={};return e.data.forEach(function(n){e.idKey||console.error("Building nodes. A key string must be supplied in options.idKey to specify the id keys of every node.");var t=typeof e.idKey=="function"?e.idKey(n):e.idKey,o=n[t];if(!o){console.error("Building nodes. Each datum in options.data must contain an id. When matching the id key string ".concat(t,", this datum has no id: ").concat(JSON.stringify(n),"."));return}if(i[o]){console.error("Building nodes. Each id for data in options.data must be unique. This id is not unique: ".concat(o,"."));return}else{var r=typeof e.renderIdKey=="function"?e.renderIdKey(n):e.renderIdKey;i[o]={id:o,edges:[],renderId:r?n[r]||"":n.renderIdKey||"",data:n}}}),i},D=function(e,i){var n,t;var o={};if((t=e.dimensions)===null||t===void 0?void 0:(n=t.parentOptions)===null||n===void 0?void 0:n.addLevel0){var s=e.dimensions.parentOptions.addLevel0;i[s.id]=a(r({},s),{dimensionLevel:0})}var c=d(K),l=function(e,i){var n=i.numericalExtents[0],t=i.numericalExtents[1];i.numericalExtents[0]=n<e?n:e,i.numericalExtents[1]=t>e?t:e};return e.data.forEach(function(n){var t=e.dimensions.values||[],s=0;t.forEach(function(t){if(!t.dimensionKey){console.error("Building nodes, parsing dimensions. Each dimension in options.dimensions must contain a dimensionKey. This dimension has no key: ".concat(JSON.stringify(t),"."));return}if(t.dimensionKey in n){var a;var v=n[t.dimensionKey],f=typeof((a=t.operations)===null||a===void 0?void 0:a.filterFunction)=="function"?t.operations.filterFunction(n,t):!0;if(v!==void 0&&f){if(t.type||(t.type=(typeof v==="undefined"?"undefined":u(v))=="bigint"||typeof v=="number"?"numerical":"categorical"),!o[t.dimensionKey]){var g,y;var p=typeof t.nodeId=="function"?t.nodeId(t,e.data):t.nodeId||j(t.dimensionKey),m=typeof t.renderId=="function"?t.renderId(t,e.data):t.renderId||p;o[t.dimensionKey]={dimensionKey:t.dimensionKey,nodeId:p,divisions:{},numericalExtents:[1/0,-1/0],type:t.type,operations:{compressSparseDivisions:((g=t.operations)===null||g===void 0?void 0:g.compressSparseDivisions)||!1,sortFunction:((y=t.operations)===null||y===void 0?void 0:y.sortFunction)||void 0},behavior:t.behavior||{extents:"circular"},navigationRules:t.navigationRules||{sibling_sibling:c.length?d(c.shift()):["previous_"+t.dimensionKey,"next_"+t.dimensionKey],parent_child:["parent_"+t.dimensionKey,"child"]}},i[p]={id:p,renderId:m,derivedNode:t.dimensionKey,edges:[],dimensionLevel:1,data:o[t.dimensionKey],renderingStrategy:t.renderingStrategy||"singleSquare"}}var h=o[t.dimensionKey],b=null;if(t.type==="categorical"){var O;var k=typeof((O=t.divisionOptions)===null||O===void 0?void 0:O.divisionNodeIds)=="function"?t.divisionOptions.divisionNodeIds(t.dimensionKey,v,s):j(h.nodeId+"_"+v);if(b=h.divisions[k],!b){var E,K,I;b=h.divisions[k]={id:k,sortFunction:((E=t.divisionOptions)===null||E===void 0?void 0:E.sortFunction)||void 0,values:{}};var R=typeof((K=t.divisionOptions)===null||K===void 0?void 0:K.divisionRenderIds)=="function"?t.divisionOptions.divisionRenderIds(t.dimensionKey,v,s):k;i[k]={id:k,renderId:R,derivedNode:t.dimensionKey,edges:[],dimensionLevel:2,data:r({},b),renderingStrategy:((I=t.divisionOptions)===null||I===void 0?void 0:I.renderingStrategy)||"singleSquare"},i[k].data[t.dimensionKey]=v}}else{var w;b=h.divisions[h.nodeId],b||(b=h.divisions[h.nodeId]={id:h.nodeId,sortFunction:((w=t.divisionOptions)===null||w===void 0?void 0:w.sortFunction)||void 0,values:{}}),t.operations||(t.operations={});var _=t.operations.createNumericalSubdivisions;h.subdivisions=typeof _=="number"&&_<1?1:_||1,_!==1&&(h.divisionOptions||(h.divisionOptions=t.divisionOptions),l(v,h))}var S=typeof e.idKey=="function"?e.idKey(n):e.idKey;b.values[n[S]]=n}}s++})}),Object.keys(o).forEach(function(e){var n;var t=o[e],r=t.divisions;if(t.type==="numerical"){r[t.nodeId].values=Object.fromEntries(Object.entries(r[t.nodeId].values).sort(function(i,n){var o;return typeof((o=t.operations)===null||o===void 0?void 0:o.sortFunction)=="function"?t.operations.sortFunction(i[1],n[1],t):i[1][e]-n[1][e]}));var s=r[t.nodeId].values;if(t.numericalExtents[0]!==1/0&&t.subdivisions!==1){var a=Object.keys(s),d=typeof t.subdivisions=="function"?t.subdivisions(e,s):t.subdivisions,u=(t.numericalExtents[1]-t.numericalExtents[0])/d,c=t.numericalExtents[0]+u,l=0,v=0;for(c=t.numericalExtents[0]+u;c<=t.numericalExtents[1];c+=u){var f,g,y,p;var m=typeof((f=t.divisionOptions)===null||f===void 0?void 0:f.divisionNodeIds)=="function"?t.divisionOptions.divisionNodeIds(e,c,c):t.nodeId+"_"+c;t.divisions[m]={id:m,sortFunction:((g=t.divisionOptions)===null||g===void 0?void 0:g.sortFunction)||void 0,values:{}};var h=typeof((y=t.divisionOptions)===null||y===void 0?void 0:y.divisionRenderIds)=="function"?t.divisionOptions.divisionRenderIds(e,c,c):m;i[m]={id:m,renderId:h,derivedNode:e,edges:[],data:t.divisions[m],dimensionLevel:2,renderingStrategy:((p=t.divisionOptions)===null||p===void 0?void 0:p.renderingStrategy)||"singleSquare"};var b=!1;for(;!b&&v<a.length;){var O=s[a[v]];O[e]<=c?t.divisions[m].values[O.id]=O:(c+=u,b=!0),v++}l++}delete r[e]}}else typeof((n=t.operations)===null||n===void 0?void 0:n.sortFunction)=="function"&&(t.divisions=Object.fromEntries(Object.entries(r).sort(function(e,i){return t.operations.sortFunction(e[1],i[1],t)})));Object.keys(t.divisions).forEach(function(e){var i=t.divisions[e];typeof i.sortFunction=="function"&&(i.values=Object.fromEntries(Object.entries(i.values).sort(function(e,n){return i.sortFunction(e[1],n[1],i)})))})}),Object.keys(o).forEach(function(e){var n=o[e];if(n.operations.compressSparseDivisions){var t=Object.keys(n.divisions),s={},a=!0;if(t.forEach(function(e){var i=n.divisions[e],t=Object.keys(i.values);t.length<=1?t.forEach(function(e){s[e]=r({},i.values[e])}):a=!1}),a){var d={id:n.nodeId,values:s};t.forEach(function(e){delete i[e]}),n.divisions={},n.divisions[n.nodeId]=d}}}),e.dimensions.adjustDimensions&&(o=e.dimensions.adjustDimensions(o)),o},P=function(e,i,n){var t={},o=function(e,n){i[e].edges.indexOf(n)===-1&&i[e].edges.push(n)},r=function(i,n,r,s){var a="".concat(i,"-").concat(n),u=e.useDirectedEdges?"".concat(n,"-").concat(a):a,c=!s||s==="source",l=!s||s==="target",v=function(e){var o;t[e]?(o=t[e].navigationRules).push.apply(o,d(r||[])):t[e]={source:i,target:n,navigationRules:r?d(r):[]}};v(a),e.useDirectedEdges&&l&&v(u),c&&o(i,a),l&&o(n,u)};if(n&&Object.keys(n).length){var s,a,u,c,l,v,f,g,y,p;var m=Object.keys(n),h=(u=e.dimensions)===null||u===void 0?void 0:(a=u.parentOptions)===null||a===void 0?void 0:(s=a.level1Options)===null||s===void 0?void 0:s.order,b=h||m,O=0,k=((c=e.dimensions)===null||c===void 0?void 0:c.parentOptions)||{},E=((v=k.level1Options)===null||v===void 0?void 0:(l=v.behavior)===null||l===void 0?void 0:l.extents)||"terminal",K=k.addLevel0,I=K?((g=k.level1Options)===null||g===void 0?void 0:(f=g.navigationRules)===null||f===void 0?void 0:f.parent_child)||["parent","child"]:[],R=((p=k.level1Options)===null||p===void 0?void 0:(y=p.navigationRules)===null||y===void 0?void 0:y.sibling_sibling)||["left","right"],j=typeof b[0]=="string"?h?i[b[0]]:i[n[b[0]].nodeId]:b[0];K&&r(K.id,j.id,I,"source"),b.forEach(function(t){var o=typeof t=="string"?h?i[t]:i[n[t].nodeId]:t;if(o===t&&!i[o.id]&&(i[o.id]=o),K&&(e.useDirectedEdges?r(o.id,K.id,I,"source"):r(K.id,o.id,I,"target")),O===b.length-1&&E==="circular")r(o.id,j.id,R);else if(O===b.length-1&&E==="bridgedCustom")r(o.id,k.level1Options.behavior.customBridgePost,R);else if(O<b.length-1){var s=typeof b[O+1]=="string"?h?i[b[O+1]]:i[n[b[O+1]].nodeId]:b[O+1];r(o.id,s.id,R)}!O&&E==="bridgedCustom"&&r(k.level1Options.behavior.customBridgePost,o.id,R),O++}),m.forEach(function(i){var t,o,s,a;var d=n[i],u=((t=d.behavior)===null||t===void 0?void 0:t.childmostNavigation)||"within",c=function(e,i,n,t){return t.values[Object.keys(t.values)[e]]||void 0},l=u==="across"&&((o=d.behavior)===null||o===void 0?void 0:o.childmostMatching)?(s=d.behavior)===null||s===void 0?void 0:s.childmostMatching:c,v=((a=d.behavior)===null||a===void 0?void 0:a.extents)||"circular";d.divisions||console.error("Parsing dimensions. The dimension using the key ".concat(i," is missing the divisions property. dimension.divisions should be supplied. ").concat(JSON.stringify(d),"."));var f=Object.keys(d.divisions),g=d.divisions[f[0]];if(f.length!==1)r(d.nodeId,g.id,d.navigationRules.parent_child,"source");else{var y=Object.keys(g.values),p=typeof e.idKey=="function"?e.idKey(g.values[y[0]]):e.idKey;r(d.nodeId,g.values[y[0]][p],d.navigationRules.parent_child,"source")}var m=0;f.forEach(function(i){var n=d.divisions[i];m===f.length-1&&(v==="circular"||v==="bridgedCousins"||v==="bridgedCustom")?r(n.id,d.divisions[f[0]].id,d.navigationRules.sibling_sibling):m<f.length-1&&r(n.id,d.divisions[f[m+1]].id,d.navigationRules.sibling_sibling);var t=Object.keys(n.values);e.useDirectedEdges?r(n.id,d.nodeId,d.navigationRules.parent_child,"source"):r(d.nodeId,n.id,d.navigationRules.parent_child,"target");var o=typeof e.idKey=="function"?e.idKey(n.values[t[0]]):e.idKey;r(n.id,n.values[t[0]][o],d.navigationRules.parent_child,"source");var s=0;t.length>1&&t.forEach(function(i){var o=n.values[i],a=typeof e.idKey=="function"?e.idKey(o):e.idKey,c=f.length!==1?n.id:d.nodeId;if(e.useDirectedEdges?r(o[a],c,d.navigationRules.parent_child,"source"):r(c,o[a],d.navigationRules.parent_child,"target"),u==="within"){if(s===t.length-1&&v==="circular"){var g=typeof e.idKey=="function"?e.idKey(n.values[t[0]]):e.idKey;r(o[a],n.values[t[0]][g],d.navigationRules.sibling_sibling)}else if(s===t.length-1&&v==="bridgedCousins")if(m!==f.length-1){var y=typeof e.idKey=="function"?e.idKey(d.divisions[f[m+1]].values[t[0]]):e.idKey;r(o[a],d.divisions[f[m+1]].values[t[0]][y],d.navigationRules.sibling_sibling)}else{var p=typeof e.idKey=="function"?e.idKey(d.divisions[f[0]].values[t[0]]):e.idKey;r(o[a],d.divisions[f[0]].values[t[0]][p],d.navigationRules.sibling_sibling)}else if(s===t.length-1&&v==="bridgedCustom")r(o[a],d.behavior.customBridgePost,d.navigationRules.sibling_sibling);else if(s<t.length-1){var h=typeof e.idKey=="function"?e.idKey(n.values[t[s+1]]):e.idKey;r(o[a],n.values[t[s+1]][h],d.navigationRules.sibling_sibling)}if(!s&&v==="bridgedCousins")if(m!==0){var b=typeof e.idKey=="function"?e.idKey(d.divisions[f[m-1]].values[t[t.length-1]]):e.idKey;r(d.divisions[f[m-1]].values[t[t.length-1]][b],o[a],d.navigationRules.sibling_sibling)}else{var O=typeof e.idKey=="function"?e.idKey(d.divisions[f[f.length-1]].values[t[t.length-1]]):e.idKey;r(d.divisions[f[f.length-1]].values[t[t.length-1]][O],o[a],d.navigationRules.sibling_sibling)}else!s&&v==="bridgedCustom"&&r(d.behavior.customBridgePrevious,o[a],d.navigationRules.sibling_sibling)}else if(m===f.length-1&&v==="bridgedCustom")r(o[a],d.behavior.customBridgePost,d.navigationRules.sibling_sibling);else if(!m&&v==="bridgedCustom")r(d.behavior.customBridgePrevious,o[a],d.navigationRules.sibling_sibling);else{var k=m===f.length-1&&v==="circular"?d.divisions[f[0]]:d.divisions[f[m+1]];if(k){var E=l(s,o[a],n,k);if(E){var K=typeof e.idKey=="function"?e.idKey(E):e.idKey;r(o[a],E[K],d.navigationRules.sibling_sibling)}}}s++}),m++})})}return Object.keys(i).forEach(function(n){var o;var r=i[n];((o=e.genericEdges)===null||o===void 0?void 0:o.length)&&e.genericEdges.forEach(function(e){t[e.edgeId]||(t[e.edgeId]=e.edge),(!e.conditional||e.conditional&&e.conditional(r,e))&&r.edges.push(e.edgeId)})}),t},L=function(e,i,n){var t=e.navigationRules;if(!t){var o=Object.keys(n||{});o.length>6&&console.error("Building navigationRules. Dimension count is too high to automatically generate key commands. It is recommend you reduce your dimensions to 6 or fewer for end-user experience. If not, you must provide your own navigation rules in options.navigationRules. Details: Count is ".concat(o.length,". Dimensions counted: ").concat(o.join(", "),"."));var s={},a={},u={},c=d(k),l=d(O),v=function(i,n){var t=i&&n,o=!1,v=!1;if((s[i]||a[i])&&(a[i]=r({},s[i]),o=!0),n&&(s[n]||a[n])&&(a[n]=r({},s[n]),v=!0),t&&!o&&!v){c.length||console.error("Building navigationRules. Dimension count is too high to automatically generate key commands, we have run out of keyboard key pairs to assign. You must either provide your own navigation rules in options.navigationRules, provide rules when generating dimensions, or reduce dimension count.");var f=d(c.shift());l.splice(l.indexOf(f[0]),1),l.splice(l.indexOf(f[1]),1),a[i]={direction:e.useDirectedEdges?"target":"source",key:f[0]},a[n]={direction:"target",key:f[1]}}else{if(!a[i]&&l.length){var g=l.shift(),y=[];c.forEach(function(e){g!==e[0]&&g!==e[1]&&y.push(e)}),c=y,a[i]={direction:e.useDirectedEdges?"target":"source",key:g}}if(n&&!a[n]&&l.length){var p=l.shift(),m=[];c.forEach(function(e){p!==e[0]&&p!==e[1]&&m.push(e)}),c=m,a[n]={direction:"target",key:p}}l.length||(a[i]||(u[i]=i),n&&!a[n]&&(u[n]=n))}};if(Object.keys(E).forEach(function(i){var n=r({},E[i]);e.useDirectedEdges&&(n.direction="target"),s[i]=n}),o.length){var f,g;if((g=e.dimensions)===null||g===void 0?void 0:(f=g.parentOptions)===null||f===void 0?void 0:f.addLevel0){var y,p;var m=((p=e.dimensions.parentOptions.level1Options)===null||p===void 0?void 0:(y=p.navigationRules)===null||y===void 0?void 0:y.parent_child)||["parent","child"];v(m[0],m[1])}o.forEach(function(e){var i=n[e].navigationRules.parent_child,t=n[e].navigationRules.sibling_sibling;v(i[0],i[1]),v(t[0],t[1])})}if(Object.keys(i).forEach(function(e){i[e].navigationRules.forEach(function(e){a[e]||v(e)})}),Object.keys(u).length){var h={};Object.keys(a).forEach(function(e){h[a[e].key]=a[e].key}),Object.keys(s).forEach(function(e){!h[s[e].key]&&!b[s[e].key]&&l.push(s[e].key)});var K=r({},u);u={},Object.keys(K).forEach(function(e){v(e)}),Object.keys(u).length&&console.error("Building navigationRules. There are no more keys left to assign automatically. Recommended fixes: use fewer dimensions, use fewer GenericEdges, or build your own navigationRules. Rules remaining without keyboard keys: ".concat(Object.keys(u).join(", "),"."))}t=a}return t},F=function(e){e.addIds&&S(e);var i=x(e),n=D(e,i),t=P(e,i,n),o=L(e,t,n);return{nodes:i,edges:t,dimensions:n,navigationRules:o}};0&&(module.exports={addSimpleDataIDs:addSimpleDataIDs,buildEdges:buildEdges,buildNodeStructureFromVegaLite:buildNodeStructureFromVegaLite,buildNodes:buildNodes,buildRules:buildRules,buildStructure:buildStructure,scaffoldDimensions:scaffoldDimensions});
|
package/dist/structure.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as T,b as F}from"./chunk-K476QBP2.mjs";import{a as $,c as P,e as k,f as C,g as w,i as B}from"./chunk-PEL3ZYDS.mjs";var z=e=>e.dataType==="vega-lite"||e.dataType==="vl"||e.dataType==="Vega-Lite"?G(e):U(e),G=e=>{let y=B,o={},u={},h={},t=0,s=e.groupInclusionCriteria?e.groupInclusionCriteria:()=>!0,f=e.itemInclusionCriteria?e.itemInclusionCriteria:()=>!0,i=e.datumInclusionCriteria?e.datumInclusionCriteria:()=>!0,l=e.vegaLiteView._renderer._origin,v=e.vegaLiteView._scenegraph.root.items[0].mark.items[0],d=(r,n)=>{if(r["data-navigator-id"])return r["data-navigator-id"];let b=`dn-node-${n}-${t}`;return t++,r["data-navigator-id"]=b,b},a=r=>{let n=o[r],b=n.index,p=n.level,j=n.parent,O=[],K=j.items[b-1];if(K){let g=d(K,p);if(o[g]){let E=`${g}-${n.id}`;O.push(E),u[E]||(u[E]={source:g,target:n.id,navigationRules:["left","right"]})}}let I=j.items[b+1];if(I){let g=d(I,p);if(o[g]){let E=`${n.id}-${g}`;O.push(E),u[E]||(u[E]={source:n.id,target:g,navigationRules:["left","right"]})}}if(p==="group"&&j.items[b].items){let E=(j.items[b].items[0].mark.items[0].items||j.items[b].items)[0],D=d(E,"item");if(o[D]){let _=`${n.id}-${D}`;O.push(_),u[_]||(u[_]={source:n.id,target:D,navigationRules:["parent","child"]})}}else if(p==="item"){let g=d(j,"group");if(o[g]){let E=`${g}-${n.id}`;O.push(E),u[E]||(u[E]={source:g,target:n.id,navigationRules:["parent","child"]})}}return e.exitFunction&&(O.push("any-exit"),u["any-exit"]||(u["any-exit"]={source:e.getCurrent,target:e.exitFunction,navigationRules:["exit"]})),O.push("any-undo"),u["any-undo"]||(u["any-undo"]={source:e.getCurrent,target:e.getPrevious,navigationRules:["undo"]}),O},m=(r,n,b,p,j)=>{let O=d(r,n),K="render-"+O,I=b||[0,0];o[O]={},o[O].d={},o[O].id=O,o[O].renderId=K,o[O].index=p,o[O].level=n,o[O].parent=j,h[K]={},h[K].renderId=K,h[K].spatialProperties={},h[K].spatialProperties.x=r.bounds.x1+I[0],h[K].spatialProperties.y=r.bounds.y1+I[1],h[K].spatialProperties.width=r.bounds.x2-r.bounds.x1,h[K].spatialProperties.height=r.bounds.y2-r.bounds.y1,h[K].cssClass="dn-vega-lite-node",r.datum&&Object.keys(r.datum).forEach(g=>{let E=r.datum[g];i(g,E,r.datum,n,e.vegaLiteSpec)&&(o[O].d[e.keyRenamingHash&&e.keyRenamingHash[g]?e.keyRenamingHash[g]:g]=E)}),h[K].semantics={},h[K].semantics.label=e.nodeDescriber?e.nodeDescriber(o[O].d,r,n):T(o[O].d)},c=0;return v.items.forEach(r=>{if(s(r,c,e.vegaLiteSpec)){m(r,"group",l,c,v);let n=0,b=r.items[0].mark.items[0].items?r.items[0].mark.items[0]:r;b.items.forEach(p=>{f(p,n,r,e.vegaLiteSpec)&&m(p,"item",l,n,b),n++})}c++}),Object.keys(o).forEach(r=>{o[r].edges=a(r)}),{nodes:o,edges:u,elementData:h,navigationRules:y}},V=e=>{let y=0,o={};e.data.forEach(u=>{let h=typeof e.idKey=="function"?e.idKey(u):e.idKey;u[h]="_"+y,e.keysForIdGeneration&&e.keysForIdGeneration.forEach(t=>{t in u&&(typeof u[t]=="string"?(o[t]||(o[t]=0),o[u[t]]||(o[u[t]]=0),u[h]+="_"+t+o[t]+"_"+u[t]+o[u[t]],o[t]++,o[u[t]]++):(o[t]||(o[t]=0),u[h]+="_"+t+o[t],o[t]++))}),y++})},q=e=>{let y={};return e.data.forEach(o=>{e.idKey||console.error("Building nodes. A key string must be supplied in options.idKey to specify the id keys of every node.");let u=typeof e.idKey=="function"?e.idKey(o):e.idKey,h=o[u];if(!h){console.error(`Building nodes. Each datum in options.data must contain an id. When matching the id key string ${u}, this datum has no id: ${JSON.stringify(o)}.`);return}if(y[h]){console.error(`Building nodes. Each id for data in options.data must be unique. This id is not unique: ${h}.`);return}else{let t=typeof e.renderIdKey=="function"?e.renderIdKey(o):e.renderIdKey;y[h]={id:h,edges:[],renderId:t?o[t]||"":o.renderIdKey||"",data:o}}}),y},A=(e,y)=>{let o={};if(e.dimensions?.parentOptions?.addLevel0){let t=e.dimensions.parentOptions.addLevel0;y[t.id]={...t,dimensionLevel:0}}let u=[...w],h=(t,s)=>{let f=s.numericalExtents[0],i=s.numericalExtents[1];s.numericalExtents[0]=f<t?f:t,s.numericalExtents[1]=i>t?i:t};return e.data.forEach(t=>{let s=e.dimensions.values||[],f=0;s.forEach(i=>{if(!i.dimensionKey){console.error(`Building nodes, parsing dimensions. Each dimension in options.dimensions must contain a dimensionKey. This dimension has no key: ${JSON.stringify(i)}.`);return}if(i.dimensionKey in t){let l=t[i.dimensionKey],v=typeof i.operations?.filterFunction=="function"?i.operations.filterFunction(t,i):!0;if(l!==void 0&&v){if(i.type||(i.type=typeof l=="bigint"||typeof l=="number"?"numerical":"categorical"),!o[i.dimensionKey]){let c=typeof i.nodeId=="function"?i.nodeId(i,e.data):i.nodeId||F(i.dimensionKey),R=typeof i.renderId=="function"?i.renderId(i,e.data):i.renderId||c;o[i.dimensionKey]={dimensionKey:i.dimensionKey,nodeId:c,divisions:{},numericalExtents:[1/0,-1/0],type:i.type,operations:{compressSparseDivisions:i.operations?.compressSparseDivisions||!1,sortFunction:i.operations?.sortFunction||void 0},behavior:i.behavior||{extents:"circular"},navigationRules:i.navigationRules||{sibling_sibling:u.length?[...u.shift()]:["previous_"+i.dimensionKey,"next_"+i.dimensionKey],parent_child:["parent_"+i.dimensionKey,"child"]}},y[c]={id:c,renderId:R,derivedNode:i.dimensionKey,edges:[],dimensionLevel:1,data:o[i.dimensionKey],renderingStrategy:i.renderingStrategy||"singleSquare"}}let d=o[i.dimensionKey],a=null;if(i.type==="categorical"){let c=typeof i.divisionOptions?.divisionNodeIds=="function"?i.divisionOptions.divisionNodeIds(i.dimensionKey,l,f):F(d.nodeId+"_"+l);if(a=d.divisions[c],!a){a=d.divisions[c]={id:c,sortFunction:i.divisionOptions?.sortFunction||void 0,values:{}};let R=typeof i.divisionOptions?.divisionRenderIds=="function"?i.divisionOptions.divisionRenderIds(i.dimensionKey,l,f):c;y[c]={id:c,renderId:R,derivedNode:i.dimensionKey,edges:[],dimensionLevel:2,data:{...a},renderingStrategy:i.divisionOptions?.renderingStrategy||"singleSquare"},y[c].data[i.dimensionKey]=l}}else{a=d.divisions[d.nodeId],a||(a=d.divisions[d.nodeId]={id:d.nodeId,sortFunction:i.divisionOptions?.sortFunction||void 0,values:{}}),i.operations||(i.operations={});let c=i.operations.createNumericalSubdivisions;d.subdivisions=typeof c=="number"&&c<1?1:c||1,c!==1&&(d.divisionOptions||(d.divisionOptions=i.divisionOptions),h(l,d))}let m=typeof e.idKey=="function"?e.idKey(t):e.idKey;a.values[t[m]]=t}}f++})}),Object.keys(o).forEach(t=>{let s=o[t],f=s.divisions;if(s.type==="numerical"){f[s.nodeId].values=Object.fromEntries(Object.entries(f[s.nodeId].values).sort((v,d)=>typeof s.operations?.sortFunction=="function"?s.operations.sortFunction(v[1],d[1],s):v[1][t]-d[1][t]));let l=f[s.nodeId].values;if(s.numericalExtents[0]!==1/0&&s.subdivisions!==1){let v=Object.keys(l),d=typeof s.subdivisions=="function"?s.subdivisions(t,l):s.subdivisions,m=(s.numericalExtents[1]-s.numericalExtents[0])/d,c=s.numericalExtents[0]+m,R=0,r=0;for(c=s.numericalExtents[0]+m;c<=s.numericalExtents[1];c+=m){let n=typeof s.divisionOptions?.divisionNodeIds=="function"?s.divisionOptions.divisionNodeIds(t,c,c):s.nodeId+"_"+c;s.divisions[n]={id:n,sortFunction:s.divisionOptions?.sortFunction||void 0,values:{}};let b=typeof s.divisionOptions?.divisionRenderIds=="function"?s.divisionOptions.divisionRenderIds(t,c,c):n;y[n]={id:n,renderId:b,derivedNode:t,edges:[],data:s.divisions[n],dimensionLevel:2,renderingStrategy:s.divisionOptions?.renderingStrategy||"singleSquare"};let p=!1;for(;!p&&r<v.length;){let j=l[v[r]];j[t]<=c?s.divisions[n].values[j.id]=j:(c+=m,p=!0),r++}R++}delete f[t]}}else typeof s.operations?.sortFunction=="function"&&(s.divisions=Object.fromEntries(Object.entries(f).sort((l,v)=>s.operations.sortFunction(l[1],v[1],s))));Object.keys(s.divisions).forEach(l=>{let v=s.divisions[l];typeof v.sortFunction=="function"&&(v.values=Object.fromEntries(Object.entries(v.values).sort((d,a)=>v.sortFunction(d[1],a[1],v))))})}),Object.keys(o).forEach(t=>{let s=o[t];if(s.operations.compressSparseDivisions){let f=Object.keys(s.divisions),i={},l=!0;if(f.forEach(v=>{let d=s.divisions[v],a=Object.keys(d.values);a.length<=1?a.forEach(m=>{i[m]={...d.values[m]}}):l=!1}),l){let v={id:s.nodeId,values:i};f.forEach(d=>{delete y[d]}),s.divisions={},s.divisions[s.nodeId]=v}}}),e.dimensions.adjustDimensions&&(o=e.dimensions.adjustDimensions(o)),o},H=(e,y,o)=>{let u={},h=(s,f)=>{y[s].edges.indexOf(f)===-1&&y[s].edges.push(f)},t=(s,f,i,l)=>{let v=`${s}-${f}`,d=e.useDirectedEdges?`${f}-${v}`:v,a=!l||l==="source",m=!l||l==="target",c=R=>{u[R]?u[R].navigationRules.push(...i||[]):u[R]={source:s,target:f,navigationRules:i?[...i]:[]}};c(v),e.useDirectedEdges&&m&&c(d),a&&h(s,v),m&&h(f,d)};if(o&&Object.keys(o).length){let s=Object.keys(o),f=e.dimensions?.parentOptions?.level1Options?.order,i=f||s,l=0,v=e.dimensions?.parentOptions||{},d=v.level1Options?.behavior?.extents||"terminal",a=v.addLevel0,m=a?v.level1Options?.navigationRules?.parent_child||["parent","child"]:[],c=v.level1Options?.navigationRules?.sibling_sibling||["left","right"],R=typeof i[0]=="string"?f?y[i[0]]:y[o[i[0]].nodeId]:i[0];a&&t(a.id,R.id,m,"source"),i.forEach(r=>{let n=typeof r=="string"?f?y[r]:y[o[r].nodeId]:r;if(n===r&&!y[n.id]&&(y[n.id]=n),a&&(e.useDirectedEdges?t(n.id,a.id,m,"source"):t(a.id,n.id,m,"target")),l===i.length-1&&d==="circular")t(n.id,R.id,c);else if(l===i.length-1&&d==="bridgedCustom")t(n.id,v.level1Options.behavior.customBridgePost,c);else if(l<i.length-1){let b=typeof i[l+1]=="string"?f?y[i[l+1]]:y[o[i[l+1]].nodeId]:i[l+1];t(n.id,b.id,c)}!l&&d==="bridgedCustom"&&t(v.level1Options.behavior.customBridgePost,n.id,c),l++}),s.forEach(r=>{let n=o[r],b=n.behavior?.extents||"circular";n.divisions||console.error(`Parsing dimensions. The dimension using the key ${r} is missing the divisions property. dimension.divisions should be supplied. ${JSON.stringify(n)}.`);let p=Object.keys(n.divisions),j=n.divisions[p[0]];if(p.length!==1)t(n.nodeId,j.id,n.navigationRules.parent_child,"source");else{let K=Object.keys(j.values),I=typeof e.idKey=="function"?e.idKey(j.values[K[0]]):e.idKey;t(n.nodeId,j.values[K[0]][I],n.navigationRules.parent_child,"source")}let O=0;p.forEach(K=>{let I=n.divisions[K];O===p.length-1&&(b==="circular"||b==="bridgedCousins"||b==="bridgedCustom")?t(I.id,n.divisions[p[0]].id,n.navigationRules.sibling_sibling):O<p.length-1&&t(I.id,n.divisions[p[O+1]].id,n.navigationRules.sibling_sibling);let g=Object.keys(I.values);e.useDirectedEdges?t(I.id,n.nodeId,n.navigationRules.parent_child,"source"):t(n.nodeId,I.id,n.navigationRules.parent_child,"target");let E=typeof e.idKey=="function"?e.idKey(I.values[g[0]]):e.idKey;t(I.id,I.values[g[0]][E],n.navigationRules.parent_child,"source");let D=0;g.length>1&&g.forEach(_=>{let x=I.values[_],S=typeof e.idKey=="function"?e.idKey(x):e.idKey,L=p.length!==1?I.id:n.nodeId;if(e.useDirectedEdges?t(x[S],L,n.navigationRules.parent_child,"source"):t(L,x[S],n.navigationRules.parent_child,"target"),D===g.length-1&&b==="circular"){let N=typeof e.idKey=="function"?e.idKey(I.values[g[0]]):e.idKey;t(x[S],I.values[g[0]][N],n.navigationRules.sibling_sibling)}else if(D===g.length-1&&b==="bridgedCousins")if(O!==p.length-1){let N=typeof e.idKey=="function"?e.idKey(n.divisions[p[O+1]].values[g[0]]):e.idKey;t(x[S],n.divisions[p[O+1]].values[g[0]][N],n.navigationRules.sibling_sibling)}else{let N=typeof e.idKey=="function"?e.idKey(n.divisions[p[0]].values[g[0]]):e.idKey;t(x[S],n.divisions[p[0]].values[g[0]][N],n.navigationRules.sibling_sibling)}else if(D===g.length-1&&b==="bridgedCustom")t(x[S],n.behavior.customBridgePost,n.navigationRules.sibling_sibling);else if(D<g.length-1){let N=typeof e.idKey=="function"?e.idKey(I.values[g[D+1]]):e.idKey;t(x[S],I.values[g[D+1]][N],n.navigationRules.sibling_sibling)}if(!D&&b==="bridgedCousins")if(O!==0){let N=typeof e.idKey=="function"?e.idKey(n.divisions[p[O-1]].values[g[g.length-1]]):e.idKey;t(n.divisions[p[O-1]].values[g[g.length-1]][N],x[S],n.navigationRules.sibling_sibling)}else{let N=typeof e.idKey=="function"?e.idKey(n.divisions[p[p.length-1]].values[g[g.length-1]]):e.idKey;t(n.divisions[p[p.length-1]].values[g[g.length-1]][N],x[S],n.navigationRules.sibling_sibling)}else!D&&b==="bridgedCustom"&&t(n.behavior.customBridgePrevious,x[S],n.navigationRules.sibling_sibling);D++}),O++})})}return Object.keys(y).forEach(s=>{let f=y[s];e.genericEdges?.length&&e.genericEdges.forEach(i=>{u[i.edgeId]||(u[i.edgeId]=i.edge),(!i.conditional||i.conditional&&i.conditional(f,i))&&f.edges.push(i.edgeId)})}),u},J=(e,y,o)=>{let u=e.navigationRules;if(!u){let h=Object.keys(o||{});h.length>6&&console.error(`Building navigationRules. Dimension count is too high to automatically generate key commands. It is recommend you reduce your dimensions to 6 or fewer for end-user experience. If not, you must provide your own navigation rules in options.navigationRules. Details: Count is ${h.length}. Dimensions counted: ${h.join(", ")}.`);let t={},s={},f={},i=[...k],l=[...P],v=(d,a)=>{let m=d&&a,c=!1,R=!1;if((t[d]||s[d])&&(s[d]={...t[d]},c=!0),a&&(t[a]||s[a])&&(s[a]={...t[a]},R=!0),m&&!c&&!R){i.length||console.error("Building navigationRules. Dimension count is too high to automatically generate key commands, we have run out of keyboard key pairs to assign. You must either provide your own navigation rules in options.navigationRules, provide rules when generating dimensions, or reduce dimension count.");let r=[...i.shift()];l.splice(l.indexOf(r[0]),1),l.splice(l.indexOf(r[1]),1),s[d]={direction:e.useDirectedEdges?"target":"source",key:r[0]},s[a]={direction:"target",key:r[1]}}else{if(!s[d]&&l.length){let r=l.shift(),n=[];i.forEach(b=>{r!==b[0]&&r!==b[1]&&n.push(b)}),i=n,s[d]={direction:e.useDirectedEdges?"target":"source",key:r}}if(a&&!s[a]&&l.length){let r=l.shift(),n=[];i.forEach(b=>{r!==b[0]&&r!==b[1]&&n.push(b)}),i=n,s[a]={direction:"target",key:r}}l.length||(s[d]||(f[d]=d),a&&!s[a]&&(f[a]=a))}};if(Object.keys(C).forEach(d=>{let a={...C[d]};e.useDirectedEdges&&(a.direction="target"),t[d]=a}),h.length){if(e.dimensions?.parentOptions?.addLevel0){let d=e.dimensions.parentOptions.level1Options?.navigationRules?.parent_child||["parent","child"];v(d[0],d[1])}h.forEach(d=>{let a=o[d].navigationRules.parent_child,m=o[d].navigationRules.sibling_sibling;v(a[0],a[1]),v(m[0],m[1])})}if(Object.keys(y).forEach(d=>{y[d].navigationRules.forEach(a=>{s[a]||v(a)})}),Object.keys(f).length){let d={};Object.keys(s).forEach(m=>{d[s[m].key]=s[m].key}),Object.keys(t).forEach(m=>{!d[t[m].key]&&!$[t[m].key]&&l.push(t[m].key)});let a={...f};f={},Object.keys(a).forEach(m=>{v(m)}),Object.keys(f).length&&console.error(`Building navigationRules. There are no more keys left to assign automatically. Recommended fixes: use fewer dimensions, use fewer GenericEdges, or build your own navigationRules. Rules remaining without keyboard keys: ${Object.keys(f).join(", ")}.`)}u=s}return u},U=e=>{e.addIds&&V(e);let y=q(e),o=A(e,y),u=H(e,y,o),h=J(e,u,o);return{nodes:y,edges:u,dimensions:o,navigationRules:h}};export{V as addSimpleDataIDs,H as buildEdges,G as buildNodeStructureFromVegaLite,q as buildNodes,J as buildRules,U as buildStructure,z as default,A as scaffoldDimensions};
|
|
1
|
+
import{a as q,b as P}from"./chunk-K476QBP2.mjs";import{a as w,c as B,e as T,f as $,g as G,i as V}from"./chunk-PEL3ZYDS.mjs";var ee=e=>e.dataType==="vega-lite"||e.dataType==="vl"||e.dataType==="Vega-Lite"?H(e):Q(e),H=e=>{let y=V,o={},u={},h={},t=0,s=e.groupInclusionCriteria?e.groupInclusionCriteria:()=>!0,g=e.itemInclusionCriteria?e.itemInclusionCriteria:()=>!0,n=e.datumInclusionCriteria?e.datumInclusionCriteria:()=>!0,l=e.vegaLiteView._renderer._origin,f=e.vegaLiteView._scenegraph.root.items[0].mark.items[0],r=(d,i)=>{if(d["data-navigator-id"])return d["data-navigator-id"];let I=`dn-node-${i}-${t}`;return t++,d["data-navigator-id"]=I,I},a=d=>{let i=o[d],I=i.index,D=i.level,x=i.parent,m=[],v=x.items[I-1];if(v){let p=r(v,D);if(o[p]){let K=`${p}-${i.id}`;m.push(K),u[K]||(u[K]={source:p,target:i.id,navigationRules:["left","right"]})}}let S=x.items[I+1];if(S){let p=r(S,D);if(o[p]){let K=`${i.id}-${p}`;m.push(K),u[K]||(u[K]={source:i.id,target:p,navigationRules:["left","right"]})}}if(D==="group"&&x.items[I].items){let K=(x.items[I].items[0].mark.items[0].items||x.items[I].items)[0],E=r(K,"item");if(o[E]){let O=`${i.id}-${E}`;m.push(O),u[O]||(u[O]={source:i.id,target:E,navigationRules:["parent","child"]})}}else if(D==="item"){let p=r(x,"group");if(o[p]){let K=`${p}-${i.id}`;m.push(K),u[K]||(u[K]={source:p,target:i.id,navigationRules:["parent","child"]})}}return e.exitFunction&&(m.push("any-exit"),u["any-exit"]||(u["any-exit"]={source:e.getCurrent,target:e.exitFunction,navigationRules:["exit"]})),m.push("any-undo"),u["any-undo"]||(u["any-undo"]={source:e.getCurrent,target:e.getPrevious,navigationRules:["undo"]}),m},b=(d,i,I,D,x)=>{let m=r(d,i),v="render-"+m,S=I||[0,0];o[m]={},o[m].d={},o[m].id=m,o[m].renderId=v,o[m].index=D,o[m].level=i,o[m].parent=x,h[v]={},h[v].renderId=v,h[v].spatialProperties={},h[v].spatialProperties.x=d.bounds.x1+S[0],h[v].spatialProperties.y=d.bounds.y1+S[1],h[v].spatialProperties.width=d.bounds.x2-d.bounds.x1,h[v].spatialProperties.height=d.bounds.y2-d.bounds.y1,h[v].cssClass="dn-vega-lite-node",d.datum&&Object.keys(d.datum).forEach(p=>{let K=d.datum[p];n(p,K,d.datum,i,e.vegaLiteSpec)&&(o[m].d[e.keyRenamingHash&&e.keyRenamingHash[p]?e.keyRenamingHash[p]:p]=K)}),h[v].semantics={},h[v].semantics.label=e.nodeDescriber?e.nodeDescriber(o[m].d,d,i):q(o[m].d)},c=0;return f.items.forEach(d=>{if(s(d,c,e.vegaLiteSpec)){b(d,"group",l,c,f);let i=0,I=d.items[0].mark.items[0].items?d.items[0].mark.items[0]:d;I.items.forEach(D=>{g(D,i,d,e.vegaLiteSpec)&&b(D,"item",l,i,I),i++})}c++}),Object.keys(o).forEach(d=>{o[d].edges=a(d)}),{nodes:o,edges:u,elementData:h,navigationRules:y}},J=e=>{let y=0,o={};e.data.forEach(u=>{let h=typeof e.idKey=="function"?e.idKey(u):e.idKey;u[h]="_"+y,e.keysForIdGeneration&&e.keysForIdGeneration.forEach(t=>{t in u&&(typeof u[t]=="string"?(o[t]||(o[t]=0),o[u[t]]||(o[u[t]]=0),u[h]+="_"+t+o[t]+"_"+u[t]+o[u[t]],o[t]++,o[u[t]]++):(o[t]||(o[t]=0),u[h]+="_"+t+o[t],o[t]++))}),y++})},U=e=>{let y={};return e.data.forEach(o=>{e.idKey||console.error("Building nodes. A key string must be supplied in options.idKey to specify the id keys of every node.");let u=typeof e.idKey=="function"?e.idKey(o):e.idKey,h=o[u];if(!h){console.error(`Building nodes. Each datum in options.data must contain an id. When matching the id key string ${u}, this datum has no id: ${JSON.stringify(o)}.`);return}if(y[h]){console.error(`Building nodes. Each id for data in options.data must be unique. This id is not unique: ${h}.`);return}else{let t=typeof e.renderIdKey=="function"?e.renderIdKey(o):e.renderIdKey;y[h]={id:h,edges:[],renderId:t?o[t]||"":o.renderIdKey||"",data:o}}}),y},W=(e,y)=>{let o={};if(e.dimensions?.parentOptions?.addLevel0){let t=e.dimensions.parentOptions.addLevel0;y[t.id]={...t,dimensionLevel:0}}let u=[...G],h=(t,s)=>{let g=s.numericalExtents[0],n=s.numericalExtents[1];s.numericalExtents[0]=g<t?g:t,s.numericalExtents[1]=n>t?n:t};return e.data.forEach(t=>{let s=e.dimensions.values||[],g=0;s.forEach(n=>{if(!n.dimensionKey){console.error(`Building nodes, parsing dimensions. Each dimension in options.dimensions must contain a dimensionKey. This dimension has no key: ${JSON.stringify(n)}.`);return}if(n.dimensionKey in t){let l=t[n.dimensionKey],f=typeof n.operations?.filterFunction=="function"?n.operations.filterFunction(t,n):!0;if(l!==void 0&&f){if(n.type||(n.type=typeof l=="bigint"||typeof l=="number"?"numerical":"categorical"),!o[n.dimensionKey]){let c=typeof n.nodeId=="function"?n.nodeId(n,e.data):n.nodeId||P(n.dimensionKey),j=typeof n.renderId=="function"?n.renderId(n,e.data):n.renderId||c;o[n.dimensionKey]={dimensionKey:n.dimensionKey,nodeId:c,divisions:{},numericalExtents:[1/0,-1/0],type:n.type,operations:{compressSparseDivisions:n.operations?.compressSparseDivisions||!1,sortFunction:n.operations?.sortFunction||void 0},behavior:n.behavior||{extents:"circular"},navigationRules:n.navigationRules||{sibling_sibling:u.length?[...u.shift()]:["previous_"+n.dimensionKey,"next_"+n.dimensionKey],parent_child:["parent_"+n.dimensionKey,"child"]}},y[c]={id:c,renderId:j,derivedNode:n.dimensionKey,edges:[],dimensionLevel:1,data:o[n.dimensionKey],renderingStrategy:n.renderingStrategy||"singleSquare"}}let r=o[n.dimensionKey],a=null;if(n.type==="categorical"){let c=typeof n.divisionOptions?.divisionNodeIds=="function"?n.divisionOptions.divisionNodeIds(n.dimensionKey,l,g):P(r.nodeId+"_"+l);if(a=r.divisions[c],!a){a=r.divisions[c]={id:c,sortFunction:n.divisionOptions?.sortFunction||void 0,values:{}};let j=typeof n.divisionOptions?.divisionRenderIds=="function"?n.divisionOptions.divisionRenderIds(n.dimensionKey,l,g):c;y[c]={id:c,renderId:j,derivedNode:n.dimensionKey,edges:[],dimensionLevel:2,data:{...a},renderingStrategy:n.divisionOptions?.renderingStrategy||"singleSquare"},y[c].data[n.dimensionKey]=l}}else{a=r.divisions[r.nodeId],a||(a=r.divisions[r.nodeId]={id:r.nodeId,sortFunction:n.divisionOptions?.sortFunction||void 0,values:{}}),n.operations||(n.operations={});let c=n.operations.createNumericalSubdivisions;r.subdivisions=typeof c=="number"&&c<1?1:c||1,c!==1&&(r.divisionOptions||(r.divisionOptions=n.divisionOptions),h(l,r))}let b=typeof e.idKey=="function"?e.idKey(t):e.idKey;a.values[t[b]]=t}}g++})}),Object.keys(o).forEach(t=>{let s=o[t],g=s.divisions;if(s.type==="numerical"){g[s.nodeId].values=Object.fromEntries(Object.entries(g[s.nodeId].values).sort((f,r)=>typeof s.operations?.sortFunction=="function"?s.operations.sortFunction(f[1],r[1],s):f[1][t]-r[1][t]));let l=g[s.nodeId].values;if(s.numericalExtents[0]!==1/0&&s.subdivisions!==1){let f=Object.keys(l),r=typeof s.subdivisions=="function"?s.subdivisions(t,l):s.subdivisions,b=(s.numericalExtents[1]-s.numericalExtents[0])/r,c=s.numericalExtents[0]+b,j=0,d=0;for(c=s.numericalExtents[0]+b;c<=s.numericalExtents[1];c+=b){let i=typeof s.divisionOptions?.divisionNodeIds=="function"?s.divisionOptions.divisionNodeIds(t,c,c):s.nodeId+"_"+c;s.divisions[i]={id:i,sortFunction:s.divisionOptions?.sortFunction||void 0,values:{}};let I=typeof s.divisionOptions?.divisionRenderIds=="function"?s.divisionOptions.divisionRenderIds(t,c,c):i;y[i]={id:i,renderId:I,derivedNode:t,edges:[],data:s.divisions[i],dimensionLevel:2,renderingStrategy:s.divisionOptions?.renderingStrategy||"singleSquare"};let D=!1;for(;!D&&d<f.length;){let x=l[f[d]];x[t]<=c?s.divisions[i].values[x.id]=x:(c+=b,D=!0),d++}j++}delete g[t]}}else typeof s.operations?.sortFunction=="function"&&(s.divisions=Object.fromEntries(Object.entries(g).sort((l,f)=>s.operations.sortFunction(l[1],f[1],s))));Object.keys(s.divisions).forEach(l=>{let f=s.divisions[l];typeof f.sortFunction=="function"&&(f.values=Object.fromEntries(Object.entries(f.values).sort((r,a)=>f.sortFunction(r[1],a[1],f))))})}),Object.keys(o).forEach(t=>{let s=o[t];if(s.operations.compressSparseDivisions){let g=Object.keys(s.divisions),n={},l=!0;if(g.forEach(f=>{let r=s.divisions[f],a=Object.keys(r.values);a.length<=1?a.forEach(b=>{n[b]={...r.values[b]}}):l=!1}),l){let f={id:s.nodeId,values:n};g.forEach(r=>{delete y[r]}),s.divisions={},s.divisions[s.nodeId]=f}}}),e.dimensions.adjustDimensions&&(o=e.dimensions.adjustDimensions(o)),o},Y=(e,y,o)=>{let u={},h=(s,g)=>{y[s].edges.indexOf(g)===-1&&y[s].edges.push(g)},t=(s,g,n,l)=>{let f=`${s}-${g}`,r=e.useDirectedEdges?`${g}-${f}`:f,a=!l||l==="source",b=!l||l==="target",c=j=>{u[j]?u[j].navigationRules.push(...n||[]):u[j]={source:s,target:g,navigationRules:n?[...n]:[]}};c(f),e.useDirectedEdges&&b&&c(r),a&&h(s,f),b&&h(g,r)};if(o&&Object.keys(o).length){let s=Object.keys(o),g=e.dimensions?.parentOptions?.level1Options?.order,n=g||s,l=0,f=e.dimensions?.parentOptions||{},r=f.level1Options?.behavior?.extents||"terminal",a=f.addLevel0,b=a?f.level1Options?.navigationRules?.parent_child||["parent","child"]:[],c=f.level1Options?.navigationRules?.sibling_sibling||["left","right"],j=typeof n[0]=="string"?g?y[n[0]]:y[o[n[0]].nodeId]:n[0];a&&t(a.id,j.id,b,"source"),n.forEach(d=>{let i=typeof d=="string"?g?y[d]:y[o[d].nodeId]:d;if(i===d&&!y[i.id]&&(y[i.id]=i),a&&(e.useDirectedEdges?t(i.id,a.id,b,"source"):t(a.id,i.id,b,"target")),l===n.length-1&&r==="circular")t(i.id,j.id,c);else if(l===n.length-1&&r==="bridgedCustom")t(i.id,f.level1Options.behavior.customBridgePost,c);else if(l<n.length-1){let I=typeof n[l+1]=="string"?g?y[n[l+1]]:y[o[n[l+1]].nodeId]:n[l+1];t(i.id,I.id,c)}!l&&r==="bridgedCustom"&&t(f.level1Options.behavior.customBridgePost,i.id,c),l++}),s.forEach(d=>{let i=o[d],I=i.behavior?.childmostNavigation||"within",D=(K,E,O,F)=>F.values[Object.keys(F.values)[K]]||void 0,x=I==="across"&&i.behavior?.childmostMatching?i.behavior?.childmostMatching:D,m=i.behavior?.extents||"circular";i.divisions||console.error(`Parsing dimensions. The dimension using the key ${d} is missing the divisions property. dimension.divisions should be supplied. ${JSON.stringify(i)}.`);let v=Object.keys(i.divisions),S=i.divisions[v[0]];if(v.length!==1)t(i.nodeId,S.id,i.navigationRules.parent_child,"source");else{let K=Object.keys(S.values),E=typeof e.idKey=="function"?e.idKey(S.values[K[0]]):e.idKey;t(i.nodeId,S.values[K[0]][E],i.navigationRules.parent_child,"source")}let p=0;v.forEach(K=>{let E=i.divisions[K];p===v.length-1&&(m==="circular"||m==="bridgedCousins"||m==="bridgedCustom")?t(E.id,i.divisions[v[0]].id,i.navigationRules.sibling_sibling):p<v.length-1&&t(E.id,i.divisions[v[p+1]].id,i.navigationRules.sibling_sibling);let O=Object.keys(E.values);e.useDirectedEdges?t(E.id,i.nodeId,i.navigationRules.parent_child,"source"):t(i.nodeId,E.id,i.navigationRules.parent_child,"target");let F=typeof e.idKey=="function"?e.idKey(E.values[O[0]]):e.idKey;t(E.id,E.values[O[0]][F],i.navigationRules.parent_child,"source");let C=0;O.length>1&&O.forEach(M=>{let R=E.values[M],N=typeof e.idKey=="function"?e.idKey(R):e.idKey,k=v.length!==1?E.id:i.nodeId;if(e.useDirectedEdges?t(R[N],k,i.navigationRules.parent_child,"source"):t(k,R[N],i.navigationRules.parent_child,"target"),I==="within"){if(C===O.length-1&&m==="circular"){let _=typeof e.idKey=="function"?e.idKey(E.values[O[0]]):e.idKey;t(R[N],E.values[O[0]][_],i.navigationRules.sibling_sibling)}else if(C===O.length-1&&m==="bridgedCousins")if(p!==v.length-1){let _=typeof e.idKey=="function"?e.idKey(i.divisions[v[p+1]].values[O[0]]):e.idKey;t(R[N],i.divisions[v[p+1]].values[O[0]][_],i.navigationRules.sibling_sibling)}else{let _=typeof e.idKey=="function"?e.idKey(i.divisions[v[0]].values[O[0]]):e.idKey;t(R[N],i.divisions[v[0]].values[O[0]][_],i.navigationRules.sibling_sibling)}else if(C===O.length-1&&m==="bridgedCustom")t(R[N],i.behavior.customBridgePost,i.navigationRules.sibling_sibling);else if(C<O.length-1){let _=typeof e.idKey=="function"?e.idKey(E.values[O[C+1]]):e.idKey;t(R[N],E.values[O[C+1]][_],i.navigationRules.sibling_sibling)}if(!C&&m==="bridgedCousins")if(p!==0){let _=typeof e.idKey=="function"?e.idKey(i.divisions[v[p-1]].values[O[O.length-1]]):e.idKey;t(i.divisions[v[p-1]].values[O[O.length-1]][_],R[N],i.navigationRules.sibling_sibling)}else{let _=typeof e.idKey=="function"?e.idKey(i.divisions[v[v.length-1]].values[O[O.length-1]]):e.idKey;t(i.divisions[v[v.length-1]].values[O[O.length-1]][_],R[N],i.navigationRules.sibling_sibling)}else!C&&m==="bridgedCustom"&&t(i.behavior.customBridgePrevious,R[N],i.navigationRules.sibling_sibling)}else if(p===v.length-1&&m==="bridgedCustom")t(R[N],i.behavior.customBridgePost,i.navigationRules.sibling_sibling);else if(!p&&m==="bridgedCustom")t(i.behavior.customBridgePrevious,R[N],i.navigationRules.sibling_sibling);else{let _=p===v.length-1&&m==="circular"?i.divisions[v[0]]:i.divisions[v[p+1]];if(_){let L=x(C,R[N],E,_);if(L){let A=typeof e.idKey=="function"?e.idKey(L):e.idKey;t(R[N],L[A],i.navigationRules.sibling_sibling)}}}C++}),p++})})}return Object.keys(y).forEach(s=>{let g=y[s];e.genericEdges?.length&&e.genericEdges.forEach(n=>{u[n.edgeId]||(u[n.edgeId]=n.edge),(!n.conditional||n.conditional&&n.conditional(g,n))&&g.edges.push(n.edgeId)})}),u},z=(e,y,o)=>{let u=e.navigationRules;if(!u){let h=Object.keys(o||{});h.length>6&&console.error(`Building navigationRules. Dimension count is too high to automatically generate key commands. It is recommend you reduce your dimensions to 6 or fewer for end-user experience. If not, you must provide your own navigation rules in options.navigationRules. Details: Count is ${h.length}. Dimensions counted: ${h.join(", ")}.`);let t={},s={},g={},n=[...T],l=[...B],f=(r,a)=>{let b=r&&a,c=!1,j=!1;if((t[r]||s[r])&&(s[r]={...t[r]},c=!0),a&&(t[a]||s[a])&&(s[a]={...t[a]},j=!0),b&&!c&&!j){n.length||console.error("Building navigationRules. Dimension count is too high to automatically generate key commands, we have run out of keyboard key pairs to assign. You must either provide your own navigation rules in options.navigationRules, provide rules when generating dimensions, or reduce dimension count.");let d=[...n.shift()];l.splice(l.indexOf(d[0]),1),l.splice(l.indexOf(d[1]),1),s[r]={direction:e.useDirectedEdges?"target":"source",key:d[0]},s[a]={direction:"target",key:d[1]}}else{if(!s[r]&&l.length){let d=l.shift(),i=[];n.forEach(I=>{d!==I[0]&&d!==I[1]&&i.push(I)}),n=i,s[r]={direction:e.useDirectedEdges?"target":"source",key:d}}if(a&&!s[a]&&l.length){let d=l.shift(),i=[];n.forEach(I=>{d!==I[0]&&d!==I[1]&&i.push(I)}),n=i,s[a]={direction:"target",key:d}}l.length||(s[r]||(g[r]=r),a&&!s[a]&&(g[a]=a))}};if(Object.keys($).forEach(r=>{let a={...$[r]};e.useDirectedEdges&&(a.direction="target"),t[r]=a}),h.length){if(e.dimensions?.parentOptions?.addLevel0){let r=e.dimensions.parentOptions.level1Options?.navigationRules?.parent_child||["parent","child"];f(r[0],r[1])}h.forEach(r=>{let a=o[r].navigationRules.parent_child,b=o[r].navigationRules.sibling_sibling;f(a[0],a[1]),f(b[0],b[1])})}if(Object.keys(y).forEach(r=>{y[r].navigationRules.forEach(a=>{s[a]||f(a)})}),Object.keys(g).length){let r={};Object.keys(s).forEach(b=>{r[s[b].key]=s[b].key}),Object.keys(t).forEach(b=>{!r[t[b].key]&&!w[t[b].key]&&l.push(t[b].key)});let a={...g};g={},Object.keys(a).forEach(b=>{f(b)}),Object.keys(g).length&&console.error(`Building navigationRules. There are no more keys left to assign automatically. Recommended fixes: use fewer dimensions, use fewer GenericEdges, or build your own navigationRules. Rules remaining without keyboard keys: ${Object.keys(g).join(", ")}.`)}u=s}return u},Q=e=>{e.addIds&&J(e);let y=U(e),o=W(e,y),u=Y(e,y,o),h=z(e,u,o);return{nodes:y,edges:u,dimensions:o,navigationRules:h}};export{J as addSimpleDataIDs,Y as buildEdges,H as buildNodeStructureFromVegaLite,U as buildNodes,z as buildRules,Q as buildStructure,ee as default,W as scaffoldDimensions};
|