UNPKG

@speckle/shared

Version:

Shared code between various Speckle JS packages

58 lines 2.32 kB
"use strict"; 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