@speckle/shared
Version:
Shared code between various Speckle JS packages
58 lines • 2.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isUngroupedGroup = exports.decodeDefaultGroupId = exports.buildDefaultGroupId = exports.formatResourceIdsForGroup = exports.ungroupedScenesGroupTitle = void 0;
const _lodash_1 = require("#lodash");
const base64_js_1 = require("../../core/utils/base64.js");
const route_js_1 = require("../../viewer/helpers/route.js");
/**
* Title used for the default 'Ungrouped Scenes' group in the saved views panel.
*/
exports.ungroupedScenesGroupTitle = 'Ungrouped';
/**
* Converts a resourceId string into a more abstract format used by groups that disregards
* specific versions of models and objects.
*/
const formatResourceIdsForGroup = (resources) => {
return (0, route_js_1.resourceBuilder)()
.addResources(resources)
.clearVersions()
.filter((r) => {
// filter out any resources that are not ViewerModelResource or ViewerObjectResource
return (0, route_js_1.isModelResource)(r) || (0, route_js_1.isObjectResource)(r);
})
.map((r) => r.toString());
};
exports.formatResourceIdsForGroup = formatResourceIdsForGroup;
const buildDefaultGroupId = (params) => {
const payload = {
resourceIds: (0, exports.formatResourceIdsForGroup)(params.resourceIds),
projectId: params.projectId,
name: 'Default Group'
};
const str = JSON.stringify(payload);
return 'default-' + (0, base64_js_1.base64Encode)(str);
};
exports.buildDefaultGroupId = buildDefaultGroupId;
const decodeDefaultGroupId = (id) => {
try {
if (!(0, exports.isUngroupedGroup)(id))
return null;
const json = (0, base64_js_1.base64Decode)(id.replace('default-', ''));
const obj = JSON.parse(json);
if (!(0, _lodash_1.isObjectLike)(obj) ||
!obj.resourceIds ||
!obj.projectId ||
obj.name !== 'Default Group') {
throw new Error('Invalid saved view group ID format');
}
return obj;
}
catch {
// Suppress - not the default group ID
return null;
}
};
exports.decodeDefaultGroupId = decodeDefaultGroupId;
const isUngroupedGroup = (groupId) => groupId.startsWith('default-');
exports.isUngroupedGroup = isUngroupedGroup;
//# sourceMappingURL=defaultGroup.js.map