@operato/scene-urdf 1.2.90 → 1.3.2

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/CHANGELOG.md CHANGED
@@ -3,6 +3,15 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [1.3.2](https://github.com/things-scene/operato-scene/compare/v1.3.1...v1.3.2) (2023-12-01)
7
+
8
+
9
+ ### :bug: Bug Fix
10
+
11
+ * upgrade theejs ([55f49c2](https://github.com/things-scene/operato-scene/commit/55f49c23fbaf17c79130b63868e12a685e8039e2))
12
+
13
+
14
+
6
15
  ## [1.2.90](https://github.com/things-scene/operato-scene/compare/v1.2.89...v1.2.90) (2023-11-22)
7
16
 
8
17
  **Note:** Version bump only for package @operato/scene-urdf
@@ -1 +1 @@
1
- {"version":3,"file":"drag-n-drop.js","sourceRoot":"","sources":["../../src/elements/drag-n-drop.ts"],"names":[],"mappings":"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","sourcesContent":["// Converts a datatransfer structer into an object with all paths and files\n\nimport URDFViewerElement from './urdf-viewer-element'\n\n// listed out. Returns a promise that resolves with the file structure.\nfunction dataTransferToFiles(dataTransfer: DataTransfer) {\n if (!(dataTransfer instanceof DataTransfer)) {\n throw new Error('Data must be of type \"DataTransfer\"')\n }\n\n const files = {} as any\n\n // recurse down the webkit file structure resolving\n // the paths to files names to store in the `files`\n // object\n function recurseDirectory(item: any): Promise<void> {\n if (item.isFile) {\n return new Promise(resolve => {\n item.file((file: any) => {\n files[item.fullPath] = file\n resolve()\n })\n })\n } else {\n const reader = item.createReader()\n\n return new Promise(resolve => {\n const promises = [] as any\n\n // exhaustively read all the directory entries\n function readNextEntries() {\n reader.readEntries((et: any) => {\n if (et.length === 0) {\n Promise.all(promises).then(() => resolve())\n } else {\n et.forEach((e: any) => {\n promises.push(recurseDirectory(e))\n })\n readNextEntries()\n }\n })\n }\n\n readNextEntries()\n })\n }\n }\n\n return new Promise(resolve => {\n // Traverse down the tree and add the files into the zip\n // const dtitems = dataTransfer.items && [...dataTransfer.items]\n // const dtfiles = [...dataTransfer.files]\n var dtitems = [] as DataTransferItem[]\n if (dataTransfer.items) {\n for (let i = 0; i < dataTransfer.items.length; i++) {\n dtitems.push(dataTransfer.items[i])\n }\n }\n\n var dtfiles = [] as File[]\n if (dataTransfer.files) {\n for (let i = 0; i < dataTransfer.files.length; i++) {\n dtfiles.push(dataTransfer.files[i])\n }\n }\n\n if (dtitems.length && (dtitems[0].webkitGetAsEntry as any)) {\n const promises = []\n for (let i = 0; i < dtitems.length; i++) {\n const item = dtitems[i]\n const entry = item.webkitGetAsEntry()\n\n promises.push(recurseDirectory(entry))\n }\n Promise.all(promises).then(() => resolve(files))\n } else {\n // add a '/' prefix to math the file directory entry\n // on webkit browsers\n dtfiles.filter(f => f.size !== 0).forEach(f => (files['/' + f.name] = f))\n\n resolve(files)\n }\n })\n}\n\nexport function registerDragEvents(viewer: URDFViewerElement, callback: () => void) {\n document.addEventListener('dragover', e => e.preventDefault())\n document.addEventListener('dragenter', e => e.preventDefault())\n document.addEventListener('drop', e => {\n e.preventDefault()\n\n // convert the files\n dataTransferToFiles(e.dataTransfer!).then((files: any) => {\n // removes '..' and '.' tokens and normalizes slashes\n const cleanFilePath = (path: string) => {\n return path\n .replace(/\\\\/g, '/')\n .split(/\\//g)\n .reduce((acc, el) => {\n if (el === '..') acc.pop()\n else if (el !== '.') acc.push(el)\n return acc\n }, [] as string[])\n .join('/')\n }\n\n // set the loader url modifier to check the list\n // of files\n const fileNames = Object.keys(files).map(n => cleanFilePath(n))\n viewer.urlModifierFunc = (url: string) => {\n // find the matching file given the requested url\n const cleaned = cleanFilePath(url.replace(viewer.package, ''))\n const fileName = fileNames\n .filter(name => {\n // check if the end of file and url are the same\n const len = Math.min(name.length, cleaned.length)\n return cleaned.substr(cleaned.length - len) === name.substr(name.length - len)\n })\n .pop()\n\n if (fileName !== undefined) {\n // revoke the url after it's been used\n const bloburl = URL.createObjectURL(files[fileName])\n requestAnimationFrame(() => URL.revokeObjectURL(bloburl))\n\n return bloburl\n }\n\n return url\n }\n\n // set the source of the element to the most likely intended display model\n const filesNames = Object.keys(files)\n viewer.up = '+Z'\n ;(document.getElementById('up-select') as any)!.value = viewer.up\n\n viewer.urdf = filesNames.filter(n => /urdf$/i.test(n)).shift()!\n })\n\n callback()\n })\n}\n"]}
1
+ {"version":3,"file":"drag-n-drop.js","sourceRoot":"","sources":["../../src/elements/drag-n-drop.ts"],"names":[],"mappings":"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","sourcesContent":["// Converts a datatransfer structer into an object with all paths and files\n\nimport URDFViewerElement from './urdf-viewer-element'\n\n// listed out. Returns a promise that resolves with the file structure.\nfunction dataTransferToFiles(dataTransfer: DataTransfer) {\n if (!(dataTransfer instanceof DataTransfer)) {\n throw new Error('Data must be of type \"DataTransfer\"')\n }\n\n const files = {} as any\n\n // recurse down the webkit file structure resolving\n // the paths to files names to store in the `files`\n // object\n function recurseDirectory(item: any): Promise<void> {\n if (item.isFile) {\n return new Promise(resolve => {\n item.file((file: any) => {\n files[item.fullPath] = file\n resolve()\n })\n })\n } else {\n const reader = item.createReader()\n\n return new Promise(resolve => {\n const promises = [] as any\n\n // exhaustively read all the directory entries\n function readNextEntries() {\n reader.readEntries((et: any) => {\n if (et.length === 0) {\n Promise.all(promises).then(() => resolve())\n } else {\n et.forEach((e: any) => {\n promises.push(recurseDirectory(e))\n })\n readNextEntries()\n }\n })\n }\n\n readNextEntries()\n })\n }\n }\n\n return new Promise(resolve => {\n // Traverse down the tree and add the files into the zip\n // const dtitems = dataTransfer.items && [...dataTransfer.items]\n // const dtfiles = [...dataTransfer.files]\n var dtitems = [] as DataTransferItem[]\n if (dataTransfer.items) {\n for (let i = 0; i < dataTransfer.items.length; i++) {\n dtitems.push(dataTransfer.items[i])\n }\n }\n\n var dtfiles = [] as File[]\n if (dataTransfer.files) {\n for (let i = 0; i < dataTransfer.files.length; i++) {\n dtfiles.push(dataTransfer.files[i])\n }\n }\n\n if (dtitems.length && (dtitems[0].webkitGetAsEntry as any)) {\n const promises = []\n for (let i = 0; i < dtitems.length; i++) {\n const item = dtitems[i]\n const entry = item.webkitGetAsEntry()\n\n promises.push(recurseDirectory(entry))\n }\n Promise.all(promises).then(() => resolve(files))\n } else {\n // add a '/' prefix to math the file directory entry\n // on webkit browsers\n dtfiles.filter(f => f.size !== 0).forEach(f => (files['/' + f.name] = f))\n\n resolve(files)\n }\n })\n}\n\nexport function registerDragEvents(viewer: URDFViewerElement, callback: () => void) {\n document.addEventListener('dragover', e => e.preventDefault())\n document.addEventListener('dragenter', e => e.preventDefault())\n document.addEventListener('drop', e => {\n e.preventDefault()\n\n // convert the files\n dataTransferToFiles(e.dataTransfer!).then((files: any) => {\n // removes '..' and '.' tokens and normalizes slashes\n const cleanFilePath = (path: string) => {\n return path\n .replace(/\\\\/g, '/')\n .split(/\\//g)\n .reduce((acc, el) => {\n if (el === '..') acc.pop()\n else if (el !== '.') acc.push(el)\n return acc\n }, [] as string[])\n .join('/')\n }\n\n // set the loader url modifier to check the list\n // of files\n const fileNames = Object.keys(files).map(n => cleanFilePath(n))\n viewer.urlModifierFunc = (url: string) => {\n // find the matching file given the requested url\n const cleaned = cleanFilePath(url.replace(viewer.package, ''))\n const fileName = fileNames\n .filter(name => {\n // check if the end of file and url are the same\n const len = Math.min(name.length, cleaned.length)\n return cleaned.substr(cleaned.length - len) === name.substr(name.length - len)\n })\n .pop()\n\n if (fileName !== undefined) {\n // revoke the url after it's been used\n const bloburl = URL.createObjectURL(files[fileName])\n requestAnimationFrame(() => URL.revokeObjectURL(bloburl))\n\n return bloburl\n }\n\n return url\n }\n\n // set the source of the element to the most likely intended display model\n const filesNames = Object.keys(files)\n viewer.up = '+Z'\n ;(document.getElementById('up-select') as any)!.value = viewer.up\n\n viewer.urdf = filesNames.filter(n => /urdf$/i.test(n)).shift()!\n })\n\n callback()\n })\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"urdf-controller-element.js","sourceRoot":"","sources":["../../src/elements/urdf-controller-element.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, css, html, PropertyValues } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport * as THREE from 'three'\nimport { registerDragEvents } from './drag-n-drop'\nimport { ScrollbarStyles } from '@operato/styles'\nimport { URDFRobot } from 'urdf-loader'\nimport URDFManipulatorElement from './urdf-manipulator-element'\n\nconst DEG2RAD = Math.PI / 180\nconst RAD2DEG = 1 / DEG2RAD\n\n@customElement('urdf-controller')\nexport default class URDFControllerElement extends LitElement {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n width: 100%;\n margin: 15px 0;\n overflow: hidden;\n user-select: none;\n }\n\n :host > * {\n margin: 5px 0;\n }\n\n input[type='number'] {\n color: white;\n border: none;\n font-weight: 300;\n background: rgba(255, 255, 255, 0.25);\n padding: 1px 2px;\n }\n\n ul {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n\n input[type='range'] {\n -webkit-appearance: none;\n border: none;\n outline: none;\n width: 100%;\n flex: 1;\n height: 16px;\n background-color: transparent;\n }\n input[type='range']::-webkit-slider-runnable-track {\n width: 100%;\n height: 1px;\n background: white;\n border: none;\n border-radius: 5px;\n }\n input[type='range']::-webkit-slider-thumb {\n -webkit-appearance: none;\n border: none;\n height: 10px;\n width: 10px;\n border-radius: 50%;\n background: white;\n margin-top: -5px;\n }\n input[type='range']:focus {\n outline: none;\n }\n input[type='range']:focus::-webkit-slider-runnable-track {\n background: white;\n }\n\n input[type='range']::-moz-range-track {\n width: 100%;\n height: 1px;\n background: white;\n border: none;\n border-radius: 5px;\n }\n input[type='range']::-moz-range-thumb {\n border: none;\n height: 10px;\n width: 10px;\n border-radius: 50%;\n background: white;\n }\n\n input[type='range']:-moz-focusring {\n outline: 1px solid white;\n outline-offset: -1px;\n }\n\n input[type='range']::-ms-track {\n width: 100%;\n height: 1px;\n background: white;\n border-radius: 10px;\n color: transparent;\n border: none;\n outline: none;\n }\n input[type='range']::-ms-thumb {\n height: 10px;\n width: 10px;\n border-radius: 50%;\n background: white;\n border: none;\n outline: none;\n margin-top: 2px;\n }\n\n input:focus {\n outline: none;\n opacity: 1;\n }\n\n /* list of joint sliders */\n ul {\n flex: 1;\n overflow-y: auto;\n }\n\n li {\n font-size: 16px;\n display: flex;\n align-items: center;\n padding: 1px 0;\n\n width: 100%;\n user-select: text;\n\n transition: background 0.25s ease;\n }\n\n li[robot-hovered] {\n background: rgba(255, 255, 255, 0.35);\n }\n\n li:hover {\n background: rgba(255, 255, 255, 0.35);\n }\n\n li span {\n padding: 0 5px;\n max-width: 125px;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n\n li input[type='number'] {\n width: 50px;\n overflow: hidden;\n }\n `\n ]\n\n @property({ type: Object }) viewer?: URDFManipulatorElement\n @property({ type: Object }) robot?: URDFRobot\n\n render() {\n const { joints = {} } = this.robot || {}\n const { ignoreLimits = false } = this.viewer || {}\n const jointsArray = Object.values(joints)\n\n return html`\n <ul>\n ${jointsArray.map(joint => {\n var { jointType, name, angle, limit } = joint\n var degVal: number | string = Number(angle || 0)\n\n if (jointType === 'revolute' || jointType === 'continuous') {\n degVal *= RAD2DEG\n }\n\n if (Math.abs(degVal) > 1) {\n degVal = degVal.toFixed(1)\n } else {\n degVal = degVal.toPrecision(2)\n }\n\n var sliderMin\n var sliderMax\n var inputMin\n var inputMax\n\n if (ignoreLimits || jointType === 'continuous') {\n sliderMin = -6.28\n sliderMax = 6.28\n\n inputMin = -6.28 * RAD2DEG\n inputMax = 6.28 * RAD2DEG\n } else {\n sliderMin = limit.lower\n sliderMax = limit.upper\n\n inputMin = Number(limit.lower) * RAD2DEG\n inputMax = Number(limit.upper) * RAD2DEG\n }\n\n return html`\n <li joint-type=${jointType} joint-name=${name}>\n <span title=${name}>${name}</span>\n <input\n type=\"range\"\n .value=${String(angle)}\n step=\"0.0001\"\n min=${sliderMin}\n max=${sliderMax}\n @input=${(e: Event) => {\n this.viewer?.setJointValue(name, (e.target as any).value)\n }}\n />\n <input\n type=\"number\"\n .value=${degVal}\n step=\"0.0001\"\n min=${inputMin}\n max=${inputMax}\n @change=${(e: Event) => {\n this.viewer?.setJointValue(name, Number((e.target as HTMLInputElement).value) * DEG2RAD)\n }}\n />\n </li>\n `\n })}\n </ul>\n `\n }\n\n updated(changes: PropertyValues<this>) {\n if (changes.has('viewer')) {\n this._setupViewer(this.viewer)\n }\n }\n\n _setupViewer(viewer?: URDFManipulatorElement) {\n if (!viewer) {\n return\n }\n\n this.robot = viewer.robot\n\n viewer.addEventListener('urdf-processed', () => {\n this.robot = viewer.robot\n })\n\n viewer.addEventListener('ignore-limits-change', () => {\n this.requestUpdate()\n })\n\n viewer.addEventListener('angle-change', (e: Event) => {\n this.requestUpdate()\n })\n\n viewer.addEventListener('joint-mouseover', (e: Event) => {\n const j = this.renderRoot.querySelector(`li[joint-name=\"${(e as CustomEvent).detail}\"]`)\n if (j) {\n j.setAttribute('robot-hovered', 'true')\n }\n })\n\n viewer.addEventListener('joint-mouseout', (e: Event) => {\n const j = this.renderRoot.querySelector(`li[joint-name=\"${(e as CustomEvent).detail}\"]`)\n if (j) {\n j.removeAttribute('robot-hovered')\n }\n })\n\n let originalNoAutoRecenter: boolean\n viewer.addEventListener('manipulate-start', (e: Event) => {\n const j = this.renderRoot.querySelector(`li[joint-name=\"${(e as CustomEvent).detail}\"]`)\n if (j) {\n // ??\n j.scrollIntoView({ block: 'nearest' })\n window.scrollTo(0, 0)\n }\n\n originalNoAutoRecenter = viewer.noAutoRecenter\n viewer.noAutoRecenter = true\n })\n\n viewer.addEventListener('manipulate-end', (e: Event) => {\n viewer.noAutoRecenter = originalNoAutoRecenter\n })\n\n registerDragEvents(viewer, () => {\n this.setColor('#263238')\n })\n }\n\n setColor(color: string) {\n this.viewer!.highlightColor = '#' + new THREE.Color(0xffffff).lerp(new THREE.Color(color), 0.35).getHexString()\n }\n}\n"]}
1
+ {"version":3,"file":"urdf-controller-element.js","sourceRoot":"","sources":["../../src/elements/urdf-controller-element.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, css, html, PropertyValues } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport * as THREE from 'three'\nimport { registerDragEvents } from './drag-n-drop'\nimport { ScrollbarStyles } from '@operato/styles'\nimport { URDFRobot } from 'urdf-loader'\nimport URDFManipulatorElement from './urdf-manipulator-element'\n\nconst DEG2RAD = Math.PI / 180\nconst RAD2DEG = 1 / DEG2RAD\n\n@customElement('urdf-controller')\nexport default class URDFControllerElement extends LitElement {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n width: 100%;\n margin: 15px 0;\n overflow: hidden;\n user-select: none;\n }\n\n :host > * {\n margin: 5px 0;\n }\n\n input[type='number'] {\n color: white;\n border: none;\n font-weight: 300;\n background: rgba(255, 255, 255, 0.25);\n padding: 1px 2px;\n }\n\n ul {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n\n input[type='range'] {\n -webkit-appearance: none;\n border: none;\n outline: none;\n width: 100%;\n flex: 1;\n height: 16px;\n background-color: transparent;\n }\n input[type='range']::-webkit-slider-runnable-track {\n width: 100%;\n height: 1px;\n background: white;\n border: none;\n border-radius: 5px;\n }\n input[type='range']::-webkit-slider-thumb {\n -webkit-appearance: none;\n border: none;\n height: 10px;\n width: 10px;\n border-radius: 50%;\n background: white;\n margin-top: -5px;\n }\n input[type='range']:focus {\n outline: none;\n }\n input[type='range']:focus::-webkit-slider-runnable-track {\n background: white;\n }\n\n input[type='range']::-moz-range-track {\n width: 100%;\n height: 1px;\n background: white;\n border: none;\n border-radius: 5px;\n }\n input[type='range']::-moz-range-thumb {\n border: none;\n height: 10px;\n width: 10px;\n border-radius: 50%;\n background: white;\n }\n\n input[type='range']:-moz-focusring {\n outline: 1px solid white;\n outline-offset: -1px;\n }\n\n input[type='range']::-ms-track {\n width: 100%;\n height: 1px;\n background: white;\n border-radius: 10px;\n color: transparent;\n border: none;\n outline: none;\n }\n input[type='range']::-ms-thumb {\n height: 10px;\n width: 10px;\n border-radius: 50%;\n background: white;\n border: none;\n outline: none;\n margin-top: 2px;\n }\n\n input:focus {\n outline: none;\n opacity: 1;\n }\n\n /* list of joint sliders */\n ul {\n flex: 1;\n overflow-y: auto;\n }\n\n li {\n font-size: 16px;\n display: flex;\n align-items: center;\n padding: 1px 0;\n\n width: 100%;\n user-select: text;\n\n transition: background 0.25s ease;\n }\n\n li[robot-hovered] {\n background: rgba(255, 255, 255, 0.35);\n }\n\n li:hover {\n background: rgba(255, 255, 255, 0.35);\n }\n\n li span {\n padding: 0 5px;\n max-width: 125px;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n\n li input[type='number'] {\n width: 50px;\n overflow: hidden;\n }\n `\n ]\n\n @property({ type: Object }) viewer?: URDFManipulatorElement\n @property({ type: Object }) robot?: URDFRobot\n\n render() {\n const { joints = {} } = this.robot || {}\n const { ignoreLimits = false } = this.viewer || {}\n const jointsArray = Object.values(joints)\n\n return html`\n <ul>\n ${jointsArray.map(joint => {\n var { jointType, name, angle, limit } = joint\n var degVal: number | string = Number(angle || 0)\n\n if (jointType === 'revolute' || jointType === 'continuous') {\n degVal *= RAD2DEG\n }\n\n if (Math.abs(degVal) > 1) {\n degVal = degVal.toFixed(1)\n } else {\n degVal = degVal.toPrecision(2)\n }\n\n var sliderMin\n var sliderMax\n var inputMin\n var inputMax\n\n if (ignoreLimits || jointType === 'continuous') {\n sliderMin = -6.28\n sliderMax = 6.28\n\n inputMin = -6.28 * RAD2DEG\n inputMax = 6.28 * RAD2DEG\n } else {\n sliderMin = limit.lower\n sliderMax = limit.upper\n\n inputMin = Number(limit.lower) * RAD2DEG\n inputMax = Number(limit.upper) * RAD2DEG\n }\n\n return html`\n <li joint-type=${jointType} joint-name=${name}>\n <span title=${name}>${name}</span>\n <input\n type=\"range\"\n .value=${String(angle)}\n step=\"0.0001\"\n min=${sliderMin}\n max=${sliderMax}\n @input=${(e: Event) => {\n this.viewer?.setJointValue(name, (e.target as any).value)\n }}\n />\n <input\n type=\"number\"\n .value=${degVal}\n step=\"0.0001\"\n min=${inputMin}\n max=${inputMax}\n @change=${(e: Event) => {\n this.viewer?.setJointValue(name, Number((e.target as HTMLInputElement).value) * DEG2RAD)\n }}\n />\n </li>\n `\n })}\n </ul>\n `\n }\n\n updated(changes: PropertyValues<this>) {\n if (changes.has('viewer')) {\n this._setupViewer(this.viewer)\n }\n }\n\n _setupViewer(viewer?: URDFManipulatorElement) {\n if (!viewer) {\n return\n }\n\n this.robot = viewer.robot\n\n viewer.addEventListener('urdf-processed', () => {\n this.robot = viewer.robot\n })\n\n viewer.addEventListener('ignore-limits-change', () => {\n this.requestUpdate()\n })\n\n viewer.addEventListener('angle-change', (e: Event) => {\n this.requestUpdate()\n })\n\n viewer.addEventListener('joint-mouseover', (e: Event) => {\n const j = this.renderRoot.querySelector(`li[joint-name=\"${(e as CustomEvent).detail}\"]`)\n if (j) {\n j.setAttribute('robot-hovered', 'true')\n }\n })\n\n viewer.addEventListener('joint-mouseout', (e: Event) => {\n const j = this.renderRoot.querySelector(`li[joint-name=\"${(e as CustomEvent).detail}\"]`)\n if (j) {\n j.removeAttribute('robot-hovered')\n }\n })\n\n let originalNoAutoRecenter: boolean\n viewer.addEventListener('manipulate-start', (e: Event) => {\n const j = this.renderRoot.querySelector(`li[joint-name=\"${(e as CustomEvent).detail}\"]`)\n if (j) {\n // ??\n j.scrollIntoView({ block: 'nearest' })\n window.scrollTo(0, 0)\n }\n\n originalNoAutoRecenter = viewer.noAutoRecenter\n viewer.noAutoRecenter = true\n })\n\n viewer.addEventListener('manipulate-end', (e: Event) => {\n viewer.noAutoRecenter = originalNoAutoRecenter\n })\n\n registerDragEvents(viewer, () => {\n this.setColor('#263238')\n })\n }\n\n setColor(color: string) {\n this.viewer!.highlightColor = '#' + new THREE.Color(0xffffff).lerp(new THREE.Color(color), 0.35).getHexString()\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"urdf-drag-controls.js","sourceRoot":"","sources":["../../src/elements/urdf-drag-controls.ts"],"names":[],"mappings":"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","sourcesContent":["import { Raycaster, Vector3, Plane, Vector2, Scene, Camera, Object3D, Ray } from 'three'\nimport { URDFJoint } from 'urdf-loader'\n\n// Find the nearest parent that is a joint\nfunction isJoint(j: URDFJoint) {\n return j.isURDFJoint && j.jointType !== 'fixed'\n}\n\nfunction findNearestJoint(child: Object3D) {\n let curr: Object3D | null = child\n while (curr) {\n if (isJoint(curr as URDFJoint)) {\n return curr\n }\n\n curr = curr.parent\n }\n\n return curr\n}\n\nconst prevHitPoint = new Vector3()\nconst newHitPoint = new Vector3()\nconst pivotPoint = new Vector3()\nconst tempVector = new Vector3()\nconst tempVector2 = new Vector3()\nconst projectedStartPoint = new Vector3()\nconst projectedEndPoint = new Vector3()\nconst plane = new Plane()\nexport class URDFDragControls {\n scene: Scene\n\n enabled: boolean\n raycaster: Raycaster\n initialGrabPoint: Vector3\n hitDistance: number\n\n hovered: any\n manipulating: any\n\n constructor(scene: Scene) {\n this.enabled = true\n this.scene = scene\n\n this.raycaster = new Raycaster()\n this.initialGrabPoint = new Vector3()\n\n this.hitDistance = -1\n this.hovered = null\n this.manipulating = null\n }\n\n update() {\n const { raycaster, hovered, manipulating, scene } = this\n\n if (manipulating) {\n return\n }\n\n let hoveredJoint = null\n const intersections = raycaster.intersectObject(scene, true)\n if (intersections.length !== 0) {\n const hit = intersections[0]\n this.hitDistance = hit.distance\n hoveredJoint = findNearestJoint(hit.object)\n this.initialGrabPoint.copy(hit.point)\n }\n\n if (hoveredJoint !== hovered) {\n if (hovered) {\n this.onUnhover(hovered)\n }\n\n this.hovered = hoveredJoint\n\n if (hoveredJoint) {\n this.onHover(hoveredJoint as URDFJoint)\n }\n }\n }\n\n updateJoint(joint: URDFJoint, angle: number) {\n joint.setJointValue(angle)\n }\n\n onDragStart(joint: URDFJoint) {}\n\n onDragEnd(joint: URDFJoint) {}\n\n onHover(joint: URDFJoint) {}\n\n onUnhover(joint: URDFJoint) {}\n\n getRevoluteDelta(joint: URDFJoint, startPoint: Vector3, endPoint: Vector3) {\n // set up the plane\n tempVector.copy(joint.axis).transformDirection(joint.matrixWorld).normalize()\n pivotPoint.set(0, 0, 0).applyMatrix4(joint.matrixWorld)\n plane.setFromNormalAndCoplanarPoint(tempVector, pivotPoint)\n\n // project the drag points onto the plane\n plane.projectPoint(startPoint, projectedStartPoint)\n plane.projectPoint(endPoint, projectedEndPoint)\n\n // get the directions relative to the pivot\n projectedStartPoint.sub(pivotPoint)\n projectedEndPoint.sub(pivotPoint)\n\n tempVector.crossVectors(projectedStartPoint, projectedEndPoint)\n\n const direction = Math.sign(tempVector.dot(plane.normal))\n return direction * projectedEndPoint.angleTo(projectedStartPoint)\n }\n\n getPrismaticDelta(joint: URDFJoint, startPoint: Vector3, endPoint: Vector3) {\n tempVector.subVectors(endPoint, startPoint)\n plane.normal.copy(joint.axis).transformDirection(joint.parent!.matrixWorld).normalize()\n\n return tempVector.dot(plane.normal)\n }\n\n moveRay(toRay: Ray) {\n const { raycaster, hitDistance, manipulating } = this\n const { ray } = raycaster\n\n if (manipulating) {\n ray.at(hitDistance, prevHitPoint)\n toRay.at(hitDistance, newHitPoint)\n\n let delta = 0\n if (manipulating.jointType === 'revolute' || manipulating.jointType === 'continuous') {\n delta = this.getRevoluteDelta(manipulating, prevHitPoint, newHitPoint)\n } else if (manipulating.jointType === 'prismatic') {\n delta = this.getPrismaticDelta(manipulating, prevHitPoint, newHitPoint)\n }\n\n if (delta) {\n this.updateJoint(manipulating, manipulating.angle + delta)\n }\n }\n\n this.raycaster.ray.copy(toRay)\n this.update()\n }\n\n setGrabbed(grabbed: boolean) {\n const { hovered, manipulating } = this\n if (grabbed) {\n if (manipulating !== null || hovered === null) {\n return\n }\n\n this.manipulating = hovered\n this.onDragStart(hovered)\n } else {\n if (this.manipulating === null) {\n return\n }\n\n this.onDragEnd(this.manipulating)\n this.manipulating = null\n this.update()\n }\n }\n}\n\nexport class PointerURDFDragControls extends URDFDragControls {\n camera: Camera\n domElement: HTMLElement\n\n _mouseDown: (e: MouseEvent) => void\n _mouseMove: (e: MouseEvent) => void\n _mouseUp: (e: MouseEvent) => void\n\n constructor(scene: Scene, camera: Camera, domElement: HTMLElement) {\n super(scene)\n\n this.camera = camera\n this.domElement = domElement\n\n const raycaster = new Raycaster()\n const mouse = new Vector2()\n\n function updateMouse(e: MouseEvent) {\n mouse.x = (e.offsetX / domElement.offsetWidth) * 2 - 1\n mouse.y = -(e.offsetY / domElement.offsetHeight) * 2 + 1\n }\n\n this._mouseDown = (e: MouseEvent) => {\n updateMouse(e)\n raycaster.setFromCamera(mouse, this.camera)\n this.moveRay(raycaster.ray)\n this.setGrabbed(true)\n }\n\n this._mouseMove = (e: MouseEvent) => {\n updateMouse(e)\n raycaster.setFromCamera(mouse, this.camera)\n this.moveRay(raycaster.ray)\n }\n\n this._mouseUp = (e: MouseEvent) => {\n updateMouse(e)\n raycaster.setFromCamera(mouse, this.camera)\n this.moveRay(raycaster.ray)\n this.setGrabbed(false)\n }\n\n domElement.addEventListener('pointerdown', this._mouseDown)\n domElement.addEventListener('pointermove', this._mouseMove)\n domElement.addEventListener('pointerup', this._mouseUp)\n }\n\n getRevoluteDelta(joint: URDFJoint, startPoint: Vector3, endPoint: Vector3) {\n const { camera, initialGrabPoint } = this\n\n // set up the plane\n tempVector.copy(joint.axis).transformDirection(joint.matrixWorld).normalize()\n pivotPoint.set(0, 0, 0).applyMatrix4(joint.matrixWorld)\n plane.setFromNormalAndCoplanarPoint(tempVector, pivotPoint)\n\n tempVector.copy(camera.position).sub(initialGrabPoint).normalize()\n\n // if looking into the plane of rotation\n if (Math.abs(tempVector.dot(plane.normal)) > 0.3) {\n return super.getRevoluteDelta(joint, startPoint, endPoint)\n } else {\n // get the up direction\n tempVector.set(0, 1, 0).transformDirection(camera.matrixWorld)\n\n // get points projected onto the plane of rotation\n plane.projectPoint(startPoint, projectedStartPoint)\n plane.projectPoint(endPoint, projectedEndPoint)\n\n tempVector.set(0, 0, -1).transformDirection(camera.matrixWorld)\n tempVector.cross(plane.normal)\n tempVector2.subVectors(endPoint, startPoint)\n\n return tempVector.dot(tempVector2)\n }\n }\n\n dispose() {\n const { domElement } = this\n domElement.removeEventListener('pointerdown', this._mouseDown)\n domElement.removeEventListener('pointermove', this._mouseMove)\n domElement.removeEventListener('pointerup', this._mouseUp)\n }\n}\n"]}
1
+ {"version":3,"file":"urdf-drag-controls.js","sourceRoot":"","sources":["../../src/elements/urdf-drag-controls.ts"],"names":[],"mappings":"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","sourcesContent":["import { Raycaster, Vector3, Plane, Vector2, Scene, Camera, Object3D, Ray } from 'three'\nimport { URDFJoint } from 'urdf-loader'\n\n// Find the nearest parent that is a joint\nfunction isJoint(j: URDFJoint) {\n return j.isURDFJoint && j.jointType !== 'fixed'\n}\n\nfunction findNearestJoint(child: Object3D) {\n let curr: Object3D | null = child\n while (curr) {\n if (isJoint(curr as URDFJoint)) {\n return curr\n }\n\n curr = curr.parent\n }\n\n return curr\n}\n\nconst prevHitPoint = new Vector3()\nconst newHitPoint = new Vector3()\nconst pivotPoint = new Vector3()\nconst tempVector = new Vector3()\nconst tempVector2 = new Vector3()\nconst projectedStartPoint = new Vector3()\nconst projectedEndPoint = new Vector3()\nconst plane = new Plane()\nexport class URDFDragControls {\n scene: Scene\n\n enabled: boolean\n raycaster: Raycaster\n initialGrabPoint: Vector3\n hitDistance: number\n\n hovered: any\n manipulating: any\n\n constructor(scene: Scene) {\n this.enabled = true\n this.scene = scene\n\n this.raycaster = new Raycaster()\n this.initialGrabPoint = new Vector3()\n\n this.hitDistance = -1\n this.hovered = null\n this.manipulating = null\n }\n\n update() {\n const { raycaster, hovered, manipulating, scene } = this\n\n if (manipulating) {\n return\n }\n\n let hoveredJoint = null\n const intersections = raycaster.intersectObject(scene, true)\n if (intersections.length !== 0) {\n const hit = intersections[0]\n this.hitDistance = hit.distance\n hoveredJoint = findNearestJoint(hit.object)\n this.initialGrabPoint.copy(hit.point)\n }\n\n if (hoveredJoint !== hovered) {\n if (hovered) {\n this.onUnhover(hovered)\n }\n\n this.hovered = hoveredJoint\n\n if (hoveredJoint) {\n this.onHover(hoveredJoint as URDFJoint)\n }\n }\n }\n\n updateJoint(joint: URDFJoint, angle: number) {\n joint.setJointValue(angle)\n }\n\n onDragStart(joint: URDFJoint) {}\n\n onDragEnd(joint: URDFJoint) {}\n\n onHover(joint: URDFJoint) {}\n\n onUnhover(joint: URDFJoint) {}\n\n getRevoluteDelta(joint: URDFJoint, startPoint: Vector3, endPoint: Vector3) {\n // set up the plane\n tempVector.copy(joint.axis).transformDirection(joint.matrixWorld).normalize()\n pivotPoint.set(0, 0, 0).applyMatrix4(joint.matrixWorld)\n plane.setFromNormalAndCoplanarPoint(tempVector, pivotPoint)\n\n // project the drag points onto the plane\n plane.projectPoint(startPoint, projectedStartPoint)\n plane.projectPoint(endPoint, projectedEndPoint)\n\n // get the directions relative to the pivot\n projectedStartPoint.sub(pivotPoint)\n projectedEndPoint.sub(pivotPoint)\n\n tempVector.crossVectors(projectedStartPoint, projectedEndPoint)\n\n const direction = Math.sign(tempVector.dot(plane.normal))\n return direction * projectedEndPoint.angleTo(projectedStartPoint)\n }\n\n getPrismaticDelta(joint: URDFJoint, startPoint: Vector3, endPoint: Vector3) {\n tempVector.subVectors(endPoint, startPoint)\n plane.normal.copy(joint.axis).transformDirection(joint.parent!.matrixWorld).normalize()\n\n return tempVector.dot(plane.normal)\n }\n\n moveRay(toRay: Ray) {\n const { raycaster, hitDistance, manipulating } = this\n const { ray } = raycaster\n\n if (manipulating) {\n ray.at(hitDistance, prevHitPoint)\n toRay.at(hitDistance, newHitPoint)\n\n let delta = 0\n if (manipulating.jointType === 'revolute' || manipulating.jointType === 'continuous') {\n delta = this.getRevoluteDelta(manipulating, prevHitPoint, newHitPoint)\n } else if (manipulating.jointType === 'prismatic') {\n delta = this.getPrismaticDelta(manipulating, prevHitPoint, newHitPoint)\n }\n\n if (delta) {\n this.updateJoint(manipulating, manipulating.angle + delta)\n }\n }\n\n this.raycaster.ray.copy(toRay)\n this.update()\n }\n\n setGrabbed(grabbed: boolean) {\n const { hovered, manipulating } = this\n if (grabbed) {\n if (manipulating !== null || hovered === null) {\n return\n }\n\n this.manipulating = hovered\n this.onDragStart(hovered)\n } else {\n if (this.manipulating === null) {\n return\n }\n\n this.onDragEnd(this.manipulating)\n this.manipulating = null\n this.update()\n }\n }\n}\n\nexport class PointerURDFDragControls extends URDFDragControls {\n camera: Camera\n domElement: HTMLElement\n\n _mouseDown: (e: MouseEvent) => void\n _mouseMove: (e: MouseEvent) => void\n _mouseUp: (e: MouseEvent) => void\n\n constructor(scene: Scene, camera: Camera, domElement: HTMLElement) {\n super(scene)\n\n this.camera = camera\n this.domElement = domElement\n\n const raycaster = new Raycaster()\n const mouse = new Vector2()\n\n function updateMouse(e: MouseEvent) {\n mouse.x = (e.offsetX / domElement.offsetWidth) * 2 - 1\n mouse.y = -(e.offsetY / domElement.offsetHeight) * 2 + 1\n }\n\n this._mouseDown = (e: MouseEvent) => {\n updateMouse(e)\n raycaster.setFromCamera(mouse, this.camera)\n this.moveRay(raycaster.ray)\n this.setGrabbed(true)\n }\n\n this._mouseMove = (e: MouseEvent) => {\n updateMouse(e)\n raycaster.setFromCamera(mouse, this.camera)\n this.moveRay(raycaster.ray)\n }\n\n this._mouseUp = (e: MouseEvent) => {\n updateMouse(e)\n raycaster.setFromCamera(mouse, this.camera)\n this.moveRay(raycaster.ray)\n this.setGrabbed(false)\n }\n\n domElement.addEventListener('pointerdown', this._mouseDown)\n domElement.addEventListener('pointermove', this._mouseMove)\n domElement.addEventListener('pointerup', this._mouseUp)\n }\n\n getRevoluteDelta(joint: URDFJoint, startPoint: Vector3, endPoint: Vector3) {\n const { camera, initialGrabPoint } = this\n\n // set up the plane\n tempVector.copy(joint.axis).transformDirection(joint.matrixWorld).normalize()\n pivotPoint.set(0, 0, 0).applyMatrix4(joint.matrixWorld)\n plane.setFromNormalAndCoplanarPoint(tempVector, pivotPoint)\n\n tempVector.copy(camera.position).sub(initialGrabPoint).normalize()\n\n // if looking into the plane of rotation\n if (Math.abs(tempVector.dot(plane.normal)) > 0.3) {\n return super.getRevoluteDelta(joint, startPoint, endPoint)\n } else {\n // get the up direction\n tempVector.set(0, 1, 0).transformDirection(camera.matrixWorld)\n\n // get points projected onto the plane of rotation\n plane.projectPoint(startPoint, projectedStartPoint)\n plane.projectPoint(endPoint, projectedEndPoint)\n\n tempVector.set(0, 0, -1).transformDirection(camera.matrixWorld)\n tempVector.cross(plane.normal)\n tempVector2.subVectors(endPoint, startPoint)\n\n return tempVector.dot(tempVector2)\n }\n }\n\n dispose() {\n const { domElement } = this\n domElement.removeEventListener('pointerdown', this._mouseDown)\n domElement.removeEventListener('pointermove', this._mouseMove)\n domElement.removeEventListener('pointerup', this._mouseUp)\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"urdf-manipulator-element.js","sourceRoot":"","sources":["../../src/elements/urdf-manipulator-element.ts"],"names":[],"mappings":"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","sourcesContent":["import { customElement } from 'lit/decorators.js'\nimport * as THREE from 'three'\nimport { PointerURDFDragControls } from './urdf-drag-controls'\nimport { Material, MeshPhongMaterial } from 'three'\nimport URDFViewerElement from './urdf-viewer-element'\nimport { URDFJoint } from 'urdf-loader'\n\n// urdf-manipulator element\n// Displays a URDF model that can be manipulated with the mouse\n\n// Events\n// joint-mouseover: Fired when a joint is hovered over\n// joint-mouseout: Fired when a joint is no longer hovered over\n// manipulate-start: Fires when a joint is manipulated\n// manipulate-end: Fires when a joint is done being manipulated\n\n@customElement('urdf-viewer')\nexport default class URDFManipulatorElement extends URDFViewerElement {\n static get observedAttributes() {\n return ['highlight-color', ...super.observedAttributes]\n }\n\n highlightMaterial: MeshPhongMaterial\n dragControls: PointerURDFDragControls\n\n get disableDragging() {\n return this.hasAttribute('disable-dragging')\n }\n\n set disableDragging(val) {\n val ? this.setAttribute('disable-dragging', String(!!val)) : this.removeAttribute('disable-dragging')\n }\n\n get highlightColor() {\n return this.getAttribute('highlight-color') || '#FFFFFF'\n }\n\n set highlightColor(val) {\n val ? this.setAttribute('highlight-color', val) : this.removeAttribute('highlight-color')\n }\n\n constructor() {\n super()\n\n // The highlight material\n this.highlightMaterial = new THREE.MeshPhongMaterial({\n shininess: 10,\n color: this.highlightColor,\n emissive: this.highlightColor,\n emissiveIntensity: 0.25\n })\n\n const isJoint = (j: URDFJoint) => {\n return j.isURDFJoint && j.jointType !== 'fixed'\n }\n\n // Highlight the link geometry under a joint\n const highlightLinkGeometry = (m: THREE.Material, revert: boolean) => {\n const traverse = (c: any) => {\n // Set or revert the highlight color\n if (c.type === 'Mesh') {\n if (revert) {\n c.material = c.__origMaterial\n delete c.__origMaterial\n } else {\n c.__origMaterial = c.material\n c.material = this.highlightMaterial\n }\n }\n\n // Look into the children and stop if the next child is\n // another joint\n if (c === m || !isJoint(c)) {\n for (let i = 0; i < c.children.length; i++) {\n traverse(c.children[i])\n }\n }\n }\n\n traverse(m)\n }\n\n const el = this.renderer.domElement\n\n const dragControls = new PointerURDFDragControls(this.scene, this.camera, el)\n\n dragControls.onDragStart = joint => {\n this.dispatchEvent(new CustomEvent('manipulate-start', { bubbles: true, cancelable: true, detail: joint.name }))\n this.controls.enabled = false\n this.redraw()\n }\n\n dragControls.onDragEnd = joint => {\n this.dispatchEvent(new CustomEvent('manipulate-end', { bubbles: true, cancelable: true, detail: joint.name }))\n this.controls.enabled = true\n this.redraw()\n }\n\n dragControls.updateJoint = (joint, angle) => {\n this.setJointValue(joint.name, angle)\n }\n\n dragControls.onHover = (joint: URDFJoint) => {\n highlightLinkGeometry(joint as any, false)\n this.dispatchEvent(new CustomEvent('joint-mouseover', { bubbles: true, cancelable: true, detail: joint.name }))\n this.redraw()\n }\n\n dragControls.onUnhover = joint => {\n highlightLinkGeometry(joint as any, true)\n this.dispatchEvent(new CustomEvent('joint-mouseout', { bubbles: true, cancelable: true, detail: joint.name }))\n this.redraw()\n }\n\n this.dragControls = dragControls\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n this.dragControls.dispose()\n }\n\n attributeChangedCallback(attr: string, oldval: any, newval: any) {\n super.attributeChangedCallback(attr, oldval, newval)\n\n switch (attr) {\n case 'highlight-color':\n this.highlightMaterial.color.set(this.highlightColor)\n this.highlightMaterial.emissive.set(this.highlightColor)\n break\n }\n }\n}\n"]}
1
+ {"version":3,"file":"urdf-manipulator-element.js","sourceRoot":"","sources":["../../src/elements/urdf-manipulator-element.ts"],"names":[],"mappings":"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","sourcesContent":["import { customElement } from 'lit/decorators.js'\nimport * as THREE from 'three'\nimport { PointerURDFDragControls } from './urdf-drag-controls'\nimport { Material, MeshPhongMaterial } from 'three'\nimport URDFViewerElement from './urdf-viewer-element'\nimport { URDFJoint } from 'urdf-loader'\n\n// urdf-manipulator element\n// Displays a URDF model that can be manipulated with the mouse\n\n// Events\n// joint-mouseover: Fired when a joint is hovered over\n// joint-mouseout: Fired when a joint is no longer hovered over\n// manipulate-start: Fires when a joint is manipulated\n// manipulate-end: Fires when a joint is done being manipulated\n\n@customElement('urdf-viewer')\nexport default class URDFManipulatorElement extends URDFViewerElement {\n static get observedAttributes() {\n return ['highlight-color', ...super.observedAttributes]\n }\n\n highlightMaterial: MeshPhongMaterial\n dragControls: PointerURDFDragControls\n\n get disableDragging() {\n return this.hasAttribute('disable-dragging')\n }\n\n set disableDragging(val) {\n val ? this.setAttribute('disable-dragging', String(!!val)) : this.removeAttribute('disable-dragging')\n }\n\n get highlightColor() {\n return this.getAttribute('highlight-color') || '#FFFFFF'\n }\n\n set highlightColor(val) {\n val ? this.setAttribute('highlight-color', val) : this.removeAttribute('highlight-color')\n }\n\n constructor() {\n super()\n\n // The highlight material\n this.highlightMaterial = new THREE.MeshPhongMaterial({\n shininess: 10,\n color: this.highlightColor,\n emissive: this.highlightColor,\n emissiveIntensity: 0.25\n })\n\n const isJoint = (j: URDFJoint) => {\n return j.isURDFJoint && j.jointType !== 'fixed'\n }\n\n // Highlight the link geometry under a joint\n const highlightLinkGeometry = (m: THREE.Material, revert: boolean) => {\n const traverse = (c: any) => {\n // Set or revert the highlight color\n if (c.type === 'Mesh') {\n if (revert) {\n c.material = c.__origMaterial\n delete c.__origMaterial\n } else {\n c.__origMaterial = c.material\n c.material = this.highlightMaterial\n }\n }\n\n // Look into the children and stop if the next child is\n // another joint\n if (c === m || !isJoint(c)) {\n for (let i = 0; i < c.children.length; i++) {\n traverse(c.children[i])\n }\n }\n }\n\n traverse(m)\n }\n\n const el = this.renderer.domElement\n\n const dragControls = new PointerURDFDragControls(this.scene, this.camera, el)\n\n dragControls.onDragStart = joint => {\n this.dispatchEvent(new CustomEvent('manipulate-start', { bubbles: true, cancelable: true, detail: joint.name }))\n this.controls.enabled = false\n this.redraw()\n }\n\n dragControls.onDragEnd = joint => {\n this.dispatchEvent(new CustomEvent('manipulate-end', { bubbles: true, cancelable: true, detail: joint.name }))\n this.controls.enabled = true\n this.redraw()\n }\n\n dragControls.updateJoint = (joint, angle) => {\n this.setJointValue(joint.name, angle)\n }\n\n dragControls.onHover = (joint: URDFJoint) => {\n highlightLinkGeometry(joint as any, false)\n this.dispatchEvent(new CustomEvent('joint-mouseover', { bubbles: true, cancelable: true, detail: joint.name }))\n this.redraw()\n }\n\n dragControls.onUnhover = joint => {\n highlightLinkGeometry(joint as any, true)\n this.dispatchEvent(new CustomEvent('joint-mouseout', { bubbles: true, cancelable: true, detail: joint.name }))\n this.redraw()\n }\n\n this.dragControls = dragControls\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n this.dragControls.dispose()\n }\n\n attributeChangedCallback(attr: string, oldval: any, newval: any) {\n super.attributeChangedCallback(attr, oldval, newval)\n\n switch (attr) {\n case 'highlight-color':\n this.highlightMaterial.color.set(this.highlightColor)\n this.highlightMaterial.emissive.set(this.highlightColor)\n break\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"urdf-viewer-element.js","sourceRoot":"","sources":["../../src/elements/urdf-viewer-element.ts"],"names":[],"mappings":"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","sourcesContent":["import * as THREE from 'three'\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'\nimport URDFLoader, { URDFJoint, URDFRobot } from 'urdf-loader/src/URDFLoader'\nimport { XacroLoader } from 'xacro-parser'\n\n// urdf-viewer element\n// Loads and displays a 3D view of a URDF-formatted robot\n\n// Events\n// urdf-change: Fires when the URDF has finished loading and getting processed\n// urdf-processed: Fires when the URDF has finished loading and getting processed\n// geometry-loaded: Fires when all the geometry has been fully loaded\n// ignore-limits-change: Fires when the 'ignore-limits' attribute changes\n// angle-change: Fires when an angle changes\nexport default class URDFViewerElement extends HTMLElement {\n static get observedAttributes() {\n return ['package', 'urdf', 'up', 'display-shadow', 'ambient-color', 'ignore-limits', 'no-auto-recenter']\n }\n\n get package() {\n return this.getAttribute('package') || ''\n }\n set package(val) {\n this.setAttribute('package', val)\n }\n\n get urdf() {\n return this.getAttribute('urdf') || ''\n }\n set urdf(val) {\n this.setAttribute('urdf', val)\n }\n\n get ignoreLimits() {\n return this.hasAttribute('ignore-limits') || false\n }\n set ignoreLimits(val) {\n val ? this.setAttribute('ignore-limits', String(val)) : this.removeAttribute('ignore-limits')\n }\n\n get up() {\n return this.getAttribute('up') || '+Z'\n }\n set up(val) {\n this.setAttribute('up', val)\n }\n\n get displayShadow() {\n return this.hasAttribute('display-shadow') || false\n }\n set displayShadow(val) {\n val ? this.setAttribute('display-shadow', '') : this.removeAttribute('display-shadow')\n }\n\n get ambientColor() {\n return this.getAttribute('ambient-color') || '#455A64'\n }\n set ambientColor(val) {\n val ? this.setAttribute('ambient-color', val) : this.removeAttribute('ambient-color')\n }\n\n get noAutoRecenter() {\n return this.hasAttribute('no-auto-recenter') || false\n }\n set noAutoRecenter(val) {\n val ? this.setAttribute('no-auto-recenter', String(true)) : this.removeAttribute('no-auto-recenter')\n }\n\n get jointValues() {\n const values = {} as any\n if (this.robot) {\n for (const name in this.robot.joints) {\n const joint = this.robot.joints[name]\n values[name] = joint.jointValue.length === 1 ? joint.angle : [...joint.jointValue]\n }\n }\n\n return values\n }\n set jointValues(val) {\n this.setJointValues(val)\n }\n\n get angles() {\n return this.jointValues\n }\n set angles(v) {\n this.jointValues = v\n }\n\n robot?: URDFRobot\n controls: OrbitControls\n scene: THREE.Scene\n camera: THREE.PerspectiveCamera\n\n world: THREE.Object3D\n renderer: THREE.WebGLRenderer\n plane: THREE.Mesh\n directionalLight: THREE.DirectionalLight\n ambientLight: THREE.HemisphereLight\n\n _prevload?: string\n _requestId = 0\n _dirty = true\n _loadScheduled = false\n loadMeshFunc?: (\n url: string,\n manager: THREE.LoadingManager,\n onLoad: (mesh: THREE.Object3D, err?: Error) => void\n ) => void\n urlModifierFunc?: (url: string) => string\n\n /* Lifecycle Functions */\n constructor() {\n super()\n\n const scene = new THREE.Scene()\n\n const ambientLight = new THREE.HemisphereLight(this.ambientColor, '#000')\n ambientLight.groundColor.lerp(ambientLight.color, 0.5)\n ambientLight.intensity = 0.5\n ambientLight.position.set(0, 1, 0)\n scene.add(ambientLight)\n\n // Light setup\n const dirLight = new THREE.DirectionalLight(0xffffff)\n dirLight.position.set(4, 10, 1)\n dirLight.shadow.mapSize.width = 2048\n dirLight.shadow.mapSize.height = 2048\n dirLight.shadow.normalBias = 0.001\n dirLight.castShadow = true\n scene.add(dirLight)\n scene.add(dirLight.target)\n\n // Renderer setup\n const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true })\n renderer.setClearColor(0xffffff)\n renderer.setClearAlpha(0)\n renderer.shadowMap.enabled = true\n renderer.shadowMap.type = THREE.PCFSoftShadowMap\n renderer.outputEncoding = THREE.sRGBEncoding\n\n // Camera setup\n const camera = new THREE.PerspectiveCamera(75, 1, 0.1, 1000)\n camera.position.z = -10\n\n // World setup\n const world = new THREE.Object3D()\n scene.add(world)\n\n const plane = new THREE.Mesh(\n new THREE.PlaneGeometry(40, 40),\n new THREE.ShadowMaterial({ side: THREE.DoubleSide, transparent: true, opacity: 0.5 })\n )\n plane.rotation.x = -Math.PI / 2\n plane.position.y = -0.5\n plane.receiveShadow = true\n plane.scale.set(10, 10, 10)\n scene.add(plane)\n\n // Controls setup\n const controls = new OrbitControls(camera, renderer.domElement)\n controls.rotateSpeed = 2.0\n controls.zoomSpeed = 5\n controls.panSpeed = 2\n controls.enableZoom = true\n controls.enableDamping = false\n controls.maxDistance = 50\n controls.minDistance = 0.25\n controls.addEventListener('change', () => this.recenter())\n\n this.scene = scene\n this.world = world\n this.renderer = renderer\n this.camera = camera\n this.controls = controls\n this.plane = plane\n this.directionalLight = dirLight\n this.ambientLight = ambientLight\n\n this._setUp(this.up)\n }\n\n connectedCallback() {\n if (!this.querySelector('canvas')) {\n var canvas = this.renderer.domElement\n canvas.style.display = 'block'\n canvas.style.width = '100%'\n canvas.style.height = '100%'\n\n this.appendChild(canvas)\n }\n\n requestAnimationFrame(() => this.recenter())\n }\n\n disconnectedCallback() {}\n\n attributeChangedCallback(attr: string, oldval: any, newval: any) {\n this.recenter()\n\n switch (attr) {\n case 'package':\n case 'urdf': {\n this._scheduleLoad()\n break\n }\n\n case 'up': {\n this._setUp(this.up)\n break\n }\n\n case 'ambient-color': {\n this.ambientLight.color.set(this.ambientColor)\n this.ambientLight.groundColor.set('#000').lerp(this.ambientLight.color, 0.5)\n break\n }\n\n case 'ignore-limits': {\n this._setIgnoreLimits(this.ignoreLimits, true)\n break\n }\n }\n }\n\n /* Public API */\n updateSize() {\n const r = this.renderer\n const w = this.clientWidth\n const h = this.clientHeight\n\n const currsize = r.getSize(new THREE.Vector2())\n\n if (currsize.width !== w || currsize.height !== h) {\n this.recenter()\n }\n\n r.setPixelRatio(window.devicePixelRatio)\n r.setSize(w, h, false)\n\n this.camera.aspect = w / h\n this.camera.updateProjectionMatrix()\n }\n\n redraw() {\n if (this.parentNode && this._dirty) {\n this._dirty = false\n try {\n this.updateSize()\n\n if (!this.noAutoRecenter) {\n this._updateEnvironment()\n }\n\n this.renderer.render(this.scene, this.camera)\n\n // update controls after the environment in\n // case the controls are retargeted\n this.controls.update()\n } catch (err) {\n console.error(err)\n } finally {\n this._dirty = true\n }\n }\n }\n\n recenter() {\n this._updateEnvironment()\n this.redraw()\n }\n\n // Set the joint with jointName to\n // angle in degrees\n setJointValue(jointName: string, ...values: Number[]) {\n if (!this.robot) return\n if (!this.robot.joints[jointName]) return\n\n if (this.robot.joints[jointName].setJointValue(values[0], values[1], values[2]) as any) {\n this.redraw()\n this.dispatchEvent(new CustomEvent('angle-change', { bubbles: true, cancelable: true, detail: jointName }))\n }\n }\n\n setJointValues(values: Number[]) {\n for (const name in values) this.setJointValue(name, values[name])\n }\n\n /* Private Functions */\n // Updates the position of the plane to be at the\n // lowest point below the robot and focuses the\n // camera on the center of the scene\n _updateEnvironment() {\n if (!this.robot) return\n\n this.world.updateMatrixWorld()\n\n const bbox = new THREE.Box3()\n bbox.setFromObject(this.robot)\n\n const center = bbox.getCenter(new THREE.Vector3())\n this.controls.target.y = center.y\n this.plane.position.y = bbox.min.y - 1e-3\n\n const dirLight = this.directionalLight\n dirLight.castShadow = this.displayShadow\n\n if (this.displayShadow) {\n // Update the shadow camera rendering bounds to encapsulate the\n // model. We use the bounding sphere of the bounding box for\n // simplicity -- this could be a tighter fit.\n const sphere = bbox.getBoundingSphere(new THREE.Sphere())\n const minmax = sphere.radius\n const cam = dirLight.shadow.camera\n cam.left = cam.bottom = -minmax\n cam.right = cam.top = minmax\n\n // Update the camera to focus on the center of the model so the\n // shadow can encapsulate it\n const offset = dirLight.position.clone().sub(dirLight.target.position)\n dirLight.target.position.copy(center)\n dirLight.position.copy(center).add(offset)\n\n cam.updateProjectionMatrix()\n }\n }\n\n _scheduleLoad() {\n // if our current model is already what's being requested\n // or has been loaded then early out\n if (this._prevload === `${this.package}|${this.urdf}`) return\n this._prevload = `${this.package}|${this.urdf}`\n\n // if we're already waiting on a load then early out\n if (this._loadScheduled) return\n this._loadScheduled = true\n\n if (this.robot) {\n this.robot.traverse((c: any) => c.dispose && c.dispose())\n this.robot.parent!.remove(this.robot)\n delete this.robot\n }\n\n requestAnimationFrame(() => {\n this._loadUrdf(this.package, this.urdf)\n this._loadScheduled = false\n })\n }\n\n // Watch the package and urdf field and load the robot model.\n // This should _only_ be called from _scheduleLoad because that\n // ensures the that current robot has been removed\n _loadUrdf(pkg: string, urdf: string) {\n this.dispatchEvent(new CustomEvent('urdf-change', { bubbles: true, cancelable: true, composed: true }))\n\n if (urdf) {\n // Keep track of this request and make\n // sure it doesn't get overwritten by\n // a subsequent one\n this._requestId++\n const requestId = this._requestId\n\n const updateMaterials = (mesh: URDFRobot) => {\n mesh.traverse(c => {\n if ((c as any).isMesh) {\n c.castShadow = true\n c.receiveShadow = true\n\n if ((c as any).material) {\n const mats = (Array.isArray((c as any).material) ? (c as any).material : [(c as any).material]).map(\n (m: any) => {\n if (m instanceof THREE.MeshBasicMaterial) {\n m = new THREE.MeshPhongMaterial()\n }\n\n // FIXME THREE.GammaEncoding is removed at v136\n // if (m.map) {\n // m.map.encoding = THREE.GammaEncoding\n // }\n\n return m\n }\n )\n\n ;(c as any).material = mats.length === 1 ? mats[0] : mats\n }\n }\n })\n }\n\n if (pkg.includes(':') && pkg.split(':')[1].substring(0, 2) !== '//') {\n // E.g. pkg = \"pkg_name: path/to/pkg_name, pk2: path2/to/pk2\"}\n\n // Convert pkg(s) into a map. E.g.\n // { \"pkg_name\": \"path/to/pkg_name\",\n // \"pk2\": \"path2/to/pk2\" }\n\n pkg = pkg.split(',').reduce((map: any, value: string) => {\n const split = value.split(/:/).filter(x => !!x)\n const pkgName = split.shift()!.trim()\n const pkgPath = split.join(':').trim()\n map[pkgName] = pkgPath\n\n return map\n }, {} as any)\n }\n\n let robot: URDFRobot\n const manager = new THREE.LoadingManager()\n manager.onLoad = () => {\n // If another request has come in to load a new\n // robot, then ignore this one\n if (this._requestId !== requestId) {\n robot.traverse(c => (c as any).dispose && (c as any).dispose())\n return\n }\n\n this.robot = robot\n\n this.world.add(robot)\n updateMaterials(robot)\n\n this._setIgnoreLimits(this.ignoreLimits)\n\n this.dispatchEvent(new CustomEvent('urdf-processed', { bubbles: true, cancelable: true, composed: true }))\n this.dispatchEvent(new CustomEvent('geometry-loaded', { bubbles: true, cancelable: true, composed: true }))\n\n this.recenter()\n }\n\n if (this.urlModifierFunc) {\n manager.setURLModifier(this.urlModifierFunc)\n }\n\n const checkXacro = /[.]/.exec(urdf) ? /[^.]+$/.exec(urdf) : undefined\n\n if (checkXacro && checkXacro[0] === 'xacro') {\n const xacroLoader = new XacroLoader()\n try {\n xacroLoader.load(\n urdf,\n xml => {\n const loader = new URDFLoader(manager)\n loader.packages = pkg\n loader.loadMeshCb = this.loadMeshFunc!\n loader.fetchOptions = { mode: 'cors', credentials: 'same-origin' }\n robot = loader.parse(xml)\n },\n err => {\n console.error('xacroloader error: ', err)\n }\n )\n } catch (error) {\n console.error(error)\n }\n } else {\n const loader = new URDFLoader(manager)\n loader.packages = pkg\n loader.loadMeshCb = this.loadMeshFunc!\n loader.fetchOptions = { mode: 'cors', credentials: 'same-origin' }\n loader.load(urdf, model => (robot = model))\n }\n }\n }\n\n // Watch the coordinate frame and update the\n // rotation of the scene to match\n _setUp(up: string) {\n if (!up) up = '+Z'\n up = up.toUpperCase()\n const sign = up.replace(/[^-+]/g, '')[0] || '+'\n const axis = up.replace(/[^XYZ]/gi, '')[0] || 'Z'\n\n const PI = Math.PI\n const HALFPI = PI / 2\n if (axis === 'X') this.world.rotation.set(0, 0, sign === '+' ? HALFPI : -HALFPI)\n if (axis === 'Z') this.world.rotation.set(sign === '+' ? -HALFPI : HALFPI, 0, 0)\n if (axis === 'Y') this.world.rotation.set(sign === '+' ? 0 : PI, 0, 0)\n }\n\n // Updates the current robot's angles to ignore\n // joint limits or not\n _setIgnoreLimits(ignore: boolean, dispatch = false) {\n if (this.robot) {\n Object.values(this.robot.joints).forEach(joint => {\n joint.ignoreLimits = ignore\n joint.setJointValue(joint.jointValue[0], joint.jointValue[1], joint.jointValue[2])\n })\n }\n\n if (dispatch) {\n this.dispatchEvent(new CustomEvent('ignore-limits-change', { bubbles: true, cancelable: true, composed: true }))\n }\n }\n}\n"]}
1
+ {"version":3,"file":"urdf-viewer-element.js","sourceRoot":"","sources":["../../src/elements/urdf-viewer-element.ts"],"names":[],"mappings":"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","sourcesContent":["import * as THREE from 'three'\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'\nimport URDFLoader, { URDFJoint, URDFRobot } from 'urdf-loader/src/URDFLoader'\nimport { XacroLoader } from 'xacro-parser'\n\n// urdf-viewer element\n// Loads and displays a 3D view of a URDF-formatted robot\n\n// Events\n// urdf-change: Fires when the URDF has finished loading and getting processed\n// urdf-processed: Fires when the URDF has finished loading and getting processed\n// geometry-loaded: Fires when all the geometry has been fully loaded\n// ignore-limits-change: Fires when the 'ignore-limits' attribute changes\n// angle-change: Fires when an angle changes\nexport default class URDFViewerElement extends HTMLElement {\n static get observedAttributes() {\n return ['package', 'urdf', 'up', 'display-shadow', 'ambient-color', 'ignore-limits', 'no-auto-recenter']\n }\n\n get package() {\n return this.getAttribute('package') || ''\n }\n set package(val) {\n this.setAttribute('package', val)\n }\n\n get urdf() {\n return this.getAttribute('urdf') || ''\n }\n set urdf(val) {\n this.setAttribute('urdf', val)\n }\n\n get ignoreLimits() {\n return this.hasAttribute('ignore-limits') || false\n }\n set ignoreLimits(val) {\n val ? this.setAttribute('ignore-limits', String(val)) : this.removeAttribute('ignore-limits')\n }\n\n get up() {\n return this.getAttribute('up') || '+Z'\n }\n set up(val) {\n this.setAttribute('up', val)\n }\n\n get displayShadow() {\n return this.hasAttribute('display-shadow') || false\n }\n set displayShadow(val) {\n val ? this.setAttribute('display-shadow', '') : this.removeAttribute('display-shadow')\n }\n\n get ambientColor() {\n return this.getAttribute('ambient-color') || '#455A64'\n }\n set ambientColor(val) {\n val ? this.setAttribute('ambient-color', val) : this.removeAttribute('ambient-color')\n }\n\n get noAutoRecenter() {\n return this.hasAttribute('no-auto-recenter') || false\n }\n set noAutoRecenter(val) {\n val ? this.setAttribute('no-auto-recenter', String(true)) : this.removeAttribute('no-auto-recenter')\n }\n\n get jointValues() {\n const values = {} as any\n if (this.robot) {\n for (const name in this.robot.joints) {\n const joint = this.robot.joints[name]\n values[name] = joint.jointValue.length === 1 ? joint.angle : [...joint.jointValue]\n }\n }\n\n return values\n }\n set jointValues(val) {\n this.setJointValues(val)\n }\n\n get angles() {\n return this.jointValues\n }\n set angles(v) {\n this.jointValues = v\n }\n\n robot?: URDFRobot\n controls: OrbitControls\n scene: THREE.Scene\n camera: THREE.PerspectiveCamera\n\n world: THREE.Object3D\n renderer: THREE.WebGLRenderer\n plane: THREE.Mesh\n directionalLight: THREE.DirectionalLight\n ambientLight: THREE.HemisphereLight\n\n _prevload?: string\n _requestId = 0\n _dirty = true\n _loadScheduled = false\n loadMeshFunc?: (\n url: string,\n manager: THREE.LoadingManager,\n onLoad: (mesh: THREE.Object3D, err?: Error) => void\n ) => void\n urlModifierFunc?: (url: string) => string\n\n /* Lifecycle Functions */\n constructor() {\n super()\n\n const scene = new THREE.Scene()\n\n const ambientLight = new THREE.HemisphereLight(this.ambientColor, '#000')\n ambientLight.groundColor.lerp(ambientLight.color, 0.5)\n ambientLight.intensity = 0.5\n ambientLight.position.set(0, 1, 0)\n scene.add(ambientLight)\n\n // Light setup\n const dirLight = new THREE.DirectionalLight(0xffffff)\n dirLight.position.set(4, 10, 1)\n dirLight.shadow.mapSize.width = 2048\n dirLight.shadow.mapSize.height = 2048\n dirLight.shadow.normalBias = 0.001\n dirLight.castShadow = true\n scene.add(dirLight)\n scene.add(dirLight.target)\n\n // Renderer setup\n const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true })\n renderer.setClearColor(0xffffff)\n renderer.setClearAlpha(0)\n renderer.shadowMap.enabled = true\n renderer.shadowMap.type = THREE.PCFSoftShadowMap\n renderer.outputEncoding = THREE.sRGBEncoding\n\n // Camera setup\n const camera = new THREE.PerspectiveCamera(75, 1, 0.1, 1000)\n camera.position.z = -10\n\n // World setup\n const world = new THREE.Object3D()\n scene.add(world)\n\n const plane = new THREE.Mesh(\n new THREE.PlaneGeometry(40, 40),\n new THREE.ShadowMaterial({ side: THREE.DoubleSide, transparent: true, opacity: 0.5 })\n )\n plane.rotation.x = -Math.PI / 2\n plane.position.y = -0.5\n plane.receiveShadow = true\n plane.scale.set(10, 10, 10)\n scene.add(plane)\n\n // Controls setup\n const controls = new OrbitControls(camera, renderer.domElement)\n controls.rotateSpeed = 2.0\n controls.zoomSpeed = 5\n controls.panSpeed = 2\n controls.enableZoom = true\n controls.enableDamping = false\n controls.maxDistance = 50\n controls.minDistance = 0.25\n controls.addEventListener('change', () => this.recenter())\n\n this.scene = scene\n this.world = world\n this.renderer = renderer\n this.camera = camera\n this.controls = controls\n this.plane = plane\n this.directionalLight = dirLight\n this.ambientLight = ambientLight\n\n this._setUp(this.up)\n }\n\n connectedCallback() {\n if (!this.querySelector('canvas')) {\n var canvas = this.renderer.domElement\n canvas.style.display = 'block'\n canvas.style.width = '100%'\n canvas.style.height = '100%'\n\n this.appendChild(canvas)\n }\n\n requestAnimationFrame(() => this.recenter())\n }\n\n disconnectedCallback() {}\n\n attributeChangedCallback(attr: string, oldval: any, newval: any) {\n this.recenter()\n\n switch (attr) {\n case 'package':\n case 'urdf': {\n this._scheduleLoad()\n break\n }\n\n case 'up': {\n this._setUp(this.up)\n break\n }\n\n case 'ambient-color': {\n this.ambientLight.color.set(this.ambientColor)\n this.ambientLight.groundColor.set('#000').lerp(this.ambientLight.color, 0.5)\n break\n }\n\n case 'ignore-limits': {\n this._setIgnoreLimits(this.ignoreLimits, true)\n break\n }\n }\n }\n\n /* Public API */\n updateSize() {\n const r = this.renderer\n const w = this.clientWidth\n const h = this.clientHeight\n\n const currsize = r.getSize(new THREE.Vector2())\n\n if (currsize.width !== w || currsize.height !== h) {\n this.recenter()\n }\n\n r.setPixelRatio(window.devicePixelRatio)\n r.setSize(w, h, false)\n\n this.camera.aspect = w / h\n this.camera.updateProjectionMatrix()\n }\n\n redraw() {\n if (this.parentNode && this._dirty) {\n this._dirty = false\n try {\n this.updateSize()\n\n if (!this.noAutoRecenter) {\n this._updateEnvironment()\n }\n\n this.renderer.render(this.scene, this.camera)\n\n // update controls after the environment in\n // case the controls are retargeted\n this.controls.update()\n } catch (err) {\n console.error(err)\n } finally {\n this._dirty = true\n }\n }\n }\n\n recenter() {\n this._updateEnvironment()\n this.redraw()\n }\n\n // Set the joint with jointName to\n // angle in degrees\n setJointValue(jointName: string, ...values: Number[]) {\n if (!this.robot) return\n if (!this.robot.joints[jointName]) return\n\n if (this.robot.joints[jointName].setJointValue(values[0], values[1], values[2]) as any) {\n this.redraw()\n this.dispatchEvent(new CustomEvent('angle-change', { bubbles: true, cancelable: true, detail: jointName }))\n }\n }\n\n setJointValues(values: Number[]) {\n for (const name in values) this.setJointValue(name, values[name])\n }\n\n /* Private Functions */\n // Updates the position of the plane to be at the\n // lowest point below the robot and focuses the\n // camera on the center of the scene\n _updateEnvironment() {\n if (!this.robot) return\n\n this.world.updateMatrixWorld()\n\n const bbox = new THREE.Box3()\n bbox.setFromObject(this.robot)\n\n const center = bbox.getCenter(new THREE.Vector3())\n this.controls.target.y = center.y\n this.plane.position.y = bbox.min.y - 1e-3\n\n const dirLight = this.directionalLight\n dirLight.castShadow = this.displayShadow\n\n if (this.displayShadow) {\n // Update the shadow camera rendering bounds to encapsulate the\n // model. We use the bounding sphere of the bounding box for\n // simplicity -- this could be a tighter fit.\n const sphere = bbox.getBoundingSphere(new THREE.Sphere())\n const minmax = sphere.radius\n const cam = dirLight.shadow.camera\n cam.left = cam.bottom = -minmax\n cam.right = cam.top = minmax\n\n // Update the camera to focus on the center of the model so the\n // shadow can encapsulate it\n const offset = dirLight.position.clone().sub(dirLight.target.position)\n dirLight.target.position.copy(center)\n dirLight.position.copy(center).add(offset)\n\n cam.updateProjectionMatrix()\n }\n }\n\n _scheduleLoad() {\n // if our current model is already what's being requested\n // or has been loaded then early out\n if (this._prevload === `${this.package}|${this.urdf}`) return\n this._prevload = `${this.package}|${this.urdf}`\n\n // if we're already waiting on a load then early out\n if (this._loadScheduled) return\n this._loadScheduled = true\n\n if (this.robot) {\n this.robot.traverse((c: any) => c.dispose && c.dispose())\n this.robot.parent!.remove(this.robot)\n delete this.robot\n }\n\n requestAnimationFrame(() => {\n this._loadUrdf(this.package, this.urdf)\n this._loadScheduled = false\n })\n }\n\n // Watch the package and urdf field and load the robot model.\n // This should _only_ be called from _scheduleLoad because that\n // ensures the that current robot has been removed\n _loadUrdf(pkg: string, urdf: string) {\n this.dispatchEvent(new CustomEvent('urdf-change', { bubbles: true, cancelable: true, composed: true }))\n\n if (urdf) {\n // Keep track of this request and make\n // sure it doesn't get overwritten by\n // a subsequent one\n this._requestId++\n const requestId = this._requestId\n\n const updateMaterials = (mesh: URDFRobot) => {\n mesh.traverse(c => {\n if ((c as any).isMesh) {\n c.castShadow = true\n c.receiveShadow = true\n\n if ((c as any).material) {\n const mats = (Array.isArray((c as any).material) ? (c as any).material : [(c as any).material]).map(\n (m: any) => {\n if (m instanceof THREE.MeshBasicMaterial) {\n m = new THREE.MeshPhongMaterial()\n }\n\n // FIXME THREE.GammaEncoding is removed at v136\n // if (m.map) {\n // m.map.encoding = THREE.GammaEncoding\n // }\n\n return m\n }\n )\n\n ;(c as any).material = mats.length === 1 ? mats[0] : mats\n }\n }\n })\n }\n\n if (pkg.includes(':') && pkg.split(':')[1].substring(0, 2) !== '//') {\n // E.g. pkg = \"pkg_name: path/to/pkg_name, pk2: path2/to/pk2\"}\n\n // Convert pkg(s) into a map. E.g.\n // { \"pkg_name\": \"path/to/pkg_name\",\n // \"pk2\": \"path2/to/pk2\" }\n\n pkg = pkg.split(',').reduce((map: any, value: string) => {\n const split = value.split(/:/).filter(x => !!x)\n const pkgName = split.shift()!.trim()\n const pkgPath = split.join(':').trim()\n map[pkgName] = pkgPath\n\n return map\n }, {} as any)\n }\n\n let robot: URDFRobot\n const manager = new THREE.LoadingManager()\n manager.onLoad = () => {\n // If another request has come in to load a new\n // robot, then ignore this one\n if (this._requestId !== requestId) {\n robot.traverse(c => (c as any).dispose && (c as any).dispose())\n return\n }\n\n this.robot = robot\n\n this.world.add(robot)\n updateMaterials(robot)\n\n this._setIgnoreLimits(this.ignoreLimits)\n\n this.dispatchEvent(new CustomEvent('urdf-processed', { bubbles: true, cancelable: true, composed: true }))\n this.dispatchEvent(new CustomEvent('geometry-loaded', { bubbles: true, cancelable: true, composed: true }))\n\n this.recenter()\n }\n\n if (this.urlModifierFunc) {\n manager.setURLModifier(this.urlModifierFunc)\n }\n\n const checkXacro = /[.]/.exec(urdf) ? /[^.]+$/.exec(urdf) : undefined\n\n if (checkXacro && checkXacro[0] === 'xacro') {\n const xacroLoader = new XacroLoader()\n try {\n xacroLoader.load(\n urdf,\n xml => {\n const loader = new URDFLoader(manager)\n loader.packages = pkg\n loader.loadMeshCb = this.loadMeshFunc!\n loader.fetchOptions = { mode: 'cors', credentials: 'same-origin' }\n robot = loader.parse(xml)\n },\n err => {\n console.error('xacroloader error: ', err)\n }\n )\n } catch (error) {\n console.error(error)\n }\n } else {\n const loader = new URDFLoader(manager)\n loader.packages = pkg\n loader.loadMeshCb = this.loadMeshFunc!\n loader.fetchOptions = { mode: 'cors', credentials: 'same-origin' }\n loader.load(urdf, model => (robot = model))\n }\n }\n }\n\n // Watch the coordinate frame and update the\n // rotation of the scene to match\n _setUp(up: string) {\n if (!up) up = '+Z'\n up = up.toUpperCase()\n const sign = up.replace(/[^-+]/g, '')[0] || '+'\n const axis = up.replace(/[^XYZ]/gi, '')[0] || 'Z'\n\n const PI = Math.PI\n const HALFPI = PI / 2\n if (axis === 'X') this.world.rotation.set(0, 0, sign === '+' ? HALFPI : -HALFPI)\n if (axis === 'Z') this.world.rotation.set(sign === '+' ? -HALFPI : HALFPI, 0, 0)\n if (axis === 'Y') this.world.rotation.set(sign === '+' ? 0 : PI, 0, 0)\n }\n\n // Updates the current robot's angles to ignore\n // joint limits or not\n _setIgnoreLimits(ignore: boolean, dispatch = false) {\n if (this.robot) {\n Object.values(this.robot.joints).forEach(joint => {\n joint.ignoreLimits = ignore\n joint.setJointValue(joint.jointValue[0], joint.jointValue[1], joint.jointValue[2])\n })\n }\n\n if (dispatch) {\n this.dispatchEvent(new CustomEvent('ignore-limits-change', { bubbles: true, cancelable: true, composed: true }))\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"urdf-controller.js","sourceRoot":"","sources":["../src/urdf-controller.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,GAAG;IACb,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE;QACV;YACE,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,gBAAgB;YACvB,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE;gBACR,SAAS,EAAE,aAAa;aACzB;SACF;KACF;CACF,CAAA;AAED,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AACxE,OAAO,oCAAoC,CAAA;AAK3C,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,oBAAoB;IAG9D,MAAM,KAAK,MAAM;QACf,OAAO,MAAM,CAAA;IACf,CAAC;IAED,gBAAgB,CAAC,UAAiC,IAAG,CAAC;IAEtD,OAAO;QACL,KAAK,CAAC,OAAO,EAAE,CAAA;IACjB,CAAC;IAED;;;;;OAKG;IACH,oBAAoB,CAAC,UAAiC;QACpD,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAC9B,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAE,SAAS,CAAC,OAAkC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC3F,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,KAAK,CAAC,UAAU,EAAE,CAAA;IACpB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,iBAAiB,CAAA;IAC1B,CAAC;IAED,IAAI,SAAS;QACX,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAC9B,IAAI,CAAC,SAAS,EAAE;YACd,OAAM;SACP;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAe,CAAA;SAC9D;QAED,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAED,IAAI,SAAS,CAAC,SAAS;QACrB,OAAO,IAAI,CAAC,UAAU,CAAA;QACtB,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAA;IAClC,CAAC;CACF;AAED,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAA","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'id-input',\n label: 'urdf-reference',\n name: 'reference',\n property: {\n component: 'urdf-viewer'\n }\n }\n ]\n}\n\nimport { Component, HTMLOverlayContainer } from '@hatiolab/things-scene'\nimport './elements/urdf-controller-element'\nimport URDFControllerElement from './elements/urdf-controller-element'\nimport URDFManipulatorElement from './elements/urdf-manipulator-element'\nimport UrdfViewer from './urdf-viewer'\n\nexport default class UrdfController extends HTMLOverlayContainer {\n _reference?: UrdfViewer\n\n static get nature() {\n return NATURE\n }\n\n oncreate_element(controller: URDFControllerElement) {}\n\n dispose() {\n super.dispose()\n }\n\n /*\n * 컴포넌트의 생성 또는 속성 변화 시에 호출되며,\n * 그에 따른 html element의 반영이 필요한 부분을 구현한다.\n *\n * ThingsComponent state => HTML element properties\n */\n setElementProperties(controller: URDFControllerElement) {\n var reference = this.reference\n controller.viewer = reference ? (reference.element as URDFManipulatorElement) : undefined\n }\n\n /*\n * 컴포넌트가 ready 상태가 되거나, 컴포넌트의 속성이 변화될 시 setElementProperties 뒤에 호출된다.\n * 변화에 따른 기본적인 html 속성이 super.reposition()에서 진행되고, 그 밖의 작업이 필요할 때, 오버라이드 한다.\n */\n reposition() {\n super.reposition()\n }\n\n get tagName() {\n return 'urdf-controller'\n }\n\n get reference() {\n var { reference } = this.state\n if (!reference) {\n return\n }\n\n if (!this._reference) {\n this._reference = this.root.findById(reference) as UrdfViewer\n }\n\n return this._reference\n }\n\n set reference(reference) {\n delete this._reference\n this.state.reference = reference\n }\n}\n\nComponent.register('urdf-controller', UrdfController)\n"]}
1
+ {"version":3,"file":"urdf-controller.js","sourceRoot":"","sources":["../src/urdf-controller.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,GAAG;IACb,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,UAAU,EAAE;QACV;YACE,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,gBAAgB;YACvB,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE;gBACR,SAAS,EAAE,aAAa;aACzB;SACF;KACF;CACF,CAAA;AAED,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AACxE,OAAO,oCAAoC,CAAA;AAK3C,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,oBAAoB;IAG9D,MAAM,KAAK,MAAM;QACf,OAAO,MAAM,CAAA;IACf,CAAC;IAED,gBAAgB,CAAC,UAAiC,IAAG,CAAC;IAEtD,OAAO;QACL,KAAK,CAAC,OAAO,EAAE,CAAA;IACjB,CAAC;IAED;;;;;OAKG;IACH,oBAAoB,CAAC,UAAiC;QACpD,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAC9B,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAE,SAAS,CAAC,OAAkC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC3F,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,KAAK,CAAC,UAAU,EAAE,CAAA;IACpB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,iBAAiB,CAAA;IAC1B,CAAC;IAED,IAAI,SAAS;QACX,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAM;QACR,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAe,CAAA;QAC/D,CAAC;QAED,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAED,IAAI,SAAS,CAAC,SAAS;QACrB,OAAO,IAAI,CAAC,UAAU,CAAA;QACtB,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAA;IAClC,CAAC;CACF;AAED,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAA","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'id-input',\n label: 'urdf-reference',\n name: 'reference',\n property: {\n component: 'urdf-viewer'\n }\n }\n ]\n}\n\nimport { Component, HTMLOverlayContainer } from '@hatiolab/things-scene'\nimport './elements/urdf-controller-element'\nimport URDFControllerElement from './elements/urdf-controller-element'\nimport URDFManipulatorElement from './elements/urdf-manipulator-element'\nimport UrdfViewer from './urdf-viewer'\n\nexport default class UrdfController extends HTMLOverlayContainer {\n _reference?: UrdfViewer\n\n static get nature() {\n return NATURE\n }\n\n oncreate_element(controller: URDFControllerElement) {}\n\n dispose() {\n super.dispose()\n }\n\n /*\n * 컴포넌트의 생성 또는 속성 변화 시에 호출되며,\n * 그에 따른 html element의 반영이 필요한 부분을 구현한다.\n *\n * ThingsComponent state => HTML element properties\n */\n setElementProperties(controller: URDFControllerElement) {\n var reference = this.reference\n controller.viewer = reference ? (reference.element as URDFManipulatorElement) : undefined\n }\n\n /*\n * 컴포넌트가 ready 상태가 되거나, 컴포넌트의 속성이 변화될 시 setElementProperties 뒤에 호출된다.\n * 변화에 따른 기본적인 html 속성이 super.reposition()에서 진행되고, 그 밖의 작업이 필요할 때, 오버라이드 한다.\n */\n reposition() {\n super.reposition()\n }\n\n get tagName() {\n return 'urdf-controller'\n }\n\n get reference() {\n var { reference } = this.state\n if (!reference) {\n return\n }\n\n if (!this._reference) {\n this._reference = this.root.findById(reference) as UrdfViewer\n }\n\n return this._reference\n }\n\n set reference(reference) {\n delete this._reference\n this.state.reference = reference\n }\n}\n\nComponent.register('urdf-controller', UrdfController)\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"urdf-viewer.js","sourceRoot":"","sources":["../src/urdf-viewer.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport { Component, HTMLOverlayElement, error, Properties } from '@hatiolab/things-scene'\nimport * as THREE from 'three'\nimport { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader.js'\nimport { ColladaLoader } from 'three/examples/jsm/loaders/ColladaLoader.js'\nimport { STLLoader } from 'three/examples/jsm/loaders/STLLoader.js'\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js'\nimport './elements/urdf-manipulator-element'\nimport URDFManipulatorElement from './elements/urdf-manipulator-element'\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'string',\n label: 'package',\n name: 'package'\n },\n {\n type: 'string',\n label: 'urdf',\n name: 'urdf'\n },\n {\n type: 'select',\n label: 'up',\n name: 'up',\n property: {\n options: ['', '+X', '-X', '+Y', '-Y', '+Z', '-Z']\n }\n },\n {\n type: 'checkbox',\n label: 'display-shadow',\n name: 'displayShadow'\n },\n {\n type: 'color',\n label: 'ambient-color',\n name: 'ambientColor'\n },\n {\n type: 'color',\n label: 'highlight-color',\n name: 'highlightColor'\n },\n {\n type: 'checkbox',\n label: 'ignore-limits',\n name: 'ignoreLimits'\n },\n {\n type: 'checkbox',\n label: 'no-auto-recenter',\n name: 'noAutoRecenter'\n },\n {\n type: 'checkbox',\n label: 'disable-dragging',\n name: 'disableDragging'\n },\n {\n type: 'checkbox',\n label: 'no-camera-control',\n name: 'noCameraControl'\n },\n {\n type: 'range-input',\n label: 'init-camera-pos-x',\n name: 'initCameraPosX',\n placeholder: 1,\n property: {\n step: 0.1,\n max: 180,\n min: -180\n }\n },\n {\n type: 'range-input',\n label: 'init-camera-pos-y',\n name: 'initCameraPosY',\n placeholder: 1,\n property: {\n step: 0.1,\n max: 180,\n min: -180\n }\n },\n {\n type: 'range-input',\n label: 'init-camera-pos-z',\n name: 'initCameraPosZ',\n placeholder: 1,\n property: {\n step: 0.1,\n max: 180,\n min: -180\n }\n }\n ],\n 'value-property': 'angles'\n}\n\nexport default class UrdfViewer extends HTMLOverlayElement {\n static get nature() {\n return NATURE\n }\n\n oncreate_element(element: URDFManipulatorElement) {\n element.addEventListener('angle-change', (e: Event) => {\n this.data = element.angles\n })\n\n element.loadMeshFunc = (path: string, manager: THREE.LoadingManager, done: (result: any, err?: any) => void) => {\n const ext = path.split(/\\./g).pop()!.toLowerCase()\n switch (ext) {\n case 'gltf':\n case 'glb':\n new GLTFLoader(manager).load(\n path,\n result => done(result.scene),\n undefined,\n err => done(null, err)\n )\n break\n case 'obj':\n new OBJLoader(manager).load(\n path,\n result => done(result),\n undefined,\n err => done(null, err)\n )\n break\n case 'dae':\n new ColladaLoader(manager).load(\n path,\n result => done(result.scene),\n undefined,\n err => done(null, err)\n )\n break\n case 'stl':\n new STLLoader(manager).load(\n path,\n result => {\n const material = new THREE.MeshPhongMaterial()\n const mesh = new THREE.Mesh(result, material)\n done(mesh)\n },\n undefined,\n err => done(null, err)\n )\n break\n }\n }\n\n // initialize first camera position\n var { initCameraPosX = 1, initCameraPosY = 1, initCameraPosZ = 1 } = this.state\n element.camera.position.set(initCameraPosX, initCameraPosY, initCameraPosZ)\n }\n\n dispose() {\n super.dispose()\n }\n\n /*\n * 컴포넌트의 생성 또는 속성 변화 시에 호출되며,\n * 그에 따른 html element의 반영이 필요한 부분을 구현한다.\n *\n * ThingsComponent state => HTML element properties\n */\n setElementProperties(element: URDFManipulatorElement) {\n var {\n package: _package,\n urdf,\n displayShadow,\n ignoreLimits,\n up,\n ambientColor,\n highlightColor,\n noAutoRecenter,\n disableDragging,\n noCameraControl,\n angles\n } = this.state\n\n element.style.pointerEvents = 'auto' //'inherit'\n\n element.package = _package\n element.urdf = urdf\n element.displayShadow = displayShadow\n element.ignoreLimits = ignoreLimits\n element.up = up\n element.ambientColor = ambientColor\n element.highlightColor = highlightColor\n element.noAutoRecenter = noAutoRecenter\n element.disableDragging = disableDragging\n element.controls.enabled = !noCameraControl\n element.angles = angles\n\n requestAnimationFrame(() => element.redraw())\n }\n\n /*\n * 컴포넌트가 ready 상태가 되거나, 컴포넌트의 속성이 변화될 시 setElementProperties 뒤에 호출된다.\n * 변화에 따른 기본적인 html 속성이 super.reposition()에서 진행되고, 그 밖의 작업이 필요할 때, 오버라이드 한다.\n */\n reposition() {\n super.reposition()\n }\n\n get tagName() {\n return 'urdf-viewer'\n }\n\n get angles() {\n // return this.element.angles\n return this.state.angles\n }\n\n set angles(angles) {\n // this.element.angles = angles\n this.setState({ angles })\n }\n\n get highlightColor() {\n return this.state.highlightColor\n }\n\n set highlightColor(highlightColor: string) {\n this.setState({ highlightColor })\n }\n\n onchange(after: Properties, before: Properties) {\n if ('initCameraPosX' in after || 'initCameraPosY' in after || 'initCameraPosZ' in after) {\n const { initCameraPosX = 1, initCameraPosY = 1, initCameraPosZ = 1 } = this.state\n this.element &&\n (this.element as URDFManipulatorElement).camera.position.set(initCameraPosX, initCameraPosY, initCameraPosZ)\n }\n\n super.onchange && super.onchange(after, before)\n }\n}\n\nComponent.register('urdf-viewer', UrdfViewer)\n"]}
1
+ {"version":3,"file":"urdf-viewer.js","sourceRoot":"","sources":["../src/urdf-viewer.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport { Component, HTMLOverlayElement, error, Properties } from '@hatiolab/things-scene'\nimport * as THREE from 'three'\nimport { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader.js'\nimport { ColladaLoader } from 'three/examples/jsm/loaders/ColladaLoader.js'\nimport { STLLoader } from 'three/examples/jsm/loaders/STLLoader.js'\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js'\nimport './elements/urdf-manipulator-element'\nimport URDFManipulatorElement from './elements/urdf-manipulator-element'\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'string',\n label: 'package',\n name: 'package'\n },\n {\n type: 'string',\n label: 'urdf',\n name: 'urdf'\n },\n {\n type: 'select',\n label: 'up',\n name: 'up',\n property: {\n options: ['', '+X', '-X', '+Y', '-Y', '+Z', '-Z']\n }\n },\n {\n type: 'checkbox',\n label: 'display-shadow',\n name: 'displayShadow'\n },\n {\n type: 'color',\n label: 'ambient-color',\n name: 'ambientColor'\n },\n {\n type: 'color',\n label: 'highlight-color',\n name: 'highlightColor'\n },\n {\n type: 'checkbox',\n label: 'ignore-limits',\n name: 'ignoreLimits'\n },\n {\n type: 'checkbox',\n label: 'no-auto-recenter',\n name: 'noAutoRecenter'\n },\n {\n type: 'checkbox',\n label: 'disable-dragging',\n name: 'disableDragging'\n },\n {\n type: 'checkbox',\n label: 'no-camera-control',\n name: 'noCameraControl'\n },\n {\n type: 'range-input',\n label: 'init-camera-pos-x',\n name: 'initCameraPosX',\n placeholder: 1,\n property: {\n step: 0.1,\n max: 180,\n min: -180\n }\n },\n {\n type: 'range-input',\n label: 'init-camera-pos-y',\n name: 'initCameraPosY',\n placeholder: 1,\n property: {\n step: 0.1,\n max: 180,\n min: -180\n }\n },\n {\n type: 'range-input',\n label: 'init-camera-pos-z',\n name: 'initCameraPosZ',\n placeholder: 1,\n property: {\n step: 0.1,\n max: 180,\n min: -180\n }\n }\n ],\n 'value-property': 'angles'\n}\n\nexport default class UrdfViewer extends HTMLOverlayElement {\n static get nature() {\n return NATURE\n }\n\n oncreate_element(element: URDFManipulatorElement) {\n element.addEventListener('angle-change', (e: Event) => {\n this.data = element.angles\n })\n\n element.loadMeshFunc = (path: string, manager: THREE.LoadingManager, done: (result: any, err?: any) => void) => {\n const ext = path.split(/\\./g).pop()!.toLowerCase()\n switch (ext) {\n case 'gltf':\n case 'glb':\n new GLTFLoader(manager).load(\n path,\n result => done(result.scene),\n undefined,\n err => done(null, err)\n )\n break\n case 'obj':\n new OBJLoader(manager).load(\n path,\n result => done(result),\n undefined,\n err => done(null, err)\n )\n break\n case 'dae':\n new ColladaLoader(manager).load(\n path,\n result => done(result.scene),\n undefined,\n err => done(null, err)\n )\n break\n case 'stl':\n new STLLoader(manager).load(\n path,\n result => {\n const material = new THREE.MeshPhongMaterial()\n const mesh = new THREE.Mesh(result, material)\n done(mesh)\n },\n undefined,\n err => done(null, err)\n )\n break\n }\n }\n\n // initialize first camera position\n var { initCameraPosX = 1, initCameraPosY = 1, initCameraPosZ = 1 } = this.state\n element.camera.position.set(initCameraPosX, initCameraPosY, initCameraPosZ)\n }\n\n dispose() {\n super.dispose()\n }\n\n /*\n * 컴포넌트의 생성 또는 속성 변화 시에 호출되며,\n * 그에 따른 html element의 반영이 필요한 부분을 구현한다.\n *\n * ThingsComponent state => HTML element properties\n */\n setElementProperties(element: URDFManipulatorElement) {\n var {\n package: _package,\n urdf,\n displayShadow,\n ignoreLimits,\n up,\n ambientColor,\n highlightColor,\n noAutoRecenter,\n disableDragging,\n noCameraControl,\n angles\n } = this.state\n\n element.style.pointerEvents = 'auto' //'inherit'\n\n element.package = _package\n element.urdf = urdf\n element.displayShadow = displayShadow\n element.ignoreLimits = ignoreLimits\n element.up = up\n element.ambientColor = ambientColor\n element.highlightColor = highlightColor\n element.noAutoRecenter = noAutoRecenter\n element.disableDragging = disableDragging\n element.controls.enabled = !noCameraControl\n element.angles = angles\n\n requestAnimationFrame(() => element.redraw())\n }\n\n /*\n * 컴포넌트가 ready 상태가 되거나, 컴포넌트의 속성이 변화될 시 setElementProperties 뒤에 호출된다.\n * 변화에 따른 기본적인 html 속성이 super.reposition()에서 진행되고, 그 밖의 작업이 필요할 때, 오버라이드 한다.\n */\n reposition() {\n super.reposition()\n }\n\n get tagName() {\n return 'urdf-viewer'\n }\n\n get angles() {\n // return this.element.angles\n return this.state.angles\n }\n\n set angles(angles) {\n // this.element.angles = angles\n this.setState({ angles })\n }\n\n get highlightColor() {\n return this.state.highlightColor\n }\n\n set highlightColor(highlightColor: string) {\n this.setState({ highlightColor })\n }\n\n onchange(after: Properties, before: Properties) {\n if ('initCameraPosX' in after || 'initCameraPosY' in after || 'initCameraPosZ' in after) {\n const { initCameraPosX = 1, initCameraPosY = 1, initCameraPosZ = 1 } = this.state\n this.element &&\n (this.element as URDFManipulatorElement).camera.position.set(initCameraPosX, initCameraPosY, initCameraPosZ)\n }\n\n super.onchange && super.onchange(after, before)\n }\n}\n\nComponent.register('urdf-viewer', UrdfViewer)\n"]}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@operato/scene-urdf",
3
3
  "description": "Scene module for manipulating robot simulation through URDF format",
4
4
  "author": "heartyoh",
5
- "version": "1.2.90",
5
+ "version": "1.3.2",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",
8
8
  "license": "MIT",
@@ -30,7 +30,7 @@
30
30
  "@hatiolab/things-scene": "^3.2.0",
31
31
  "@operato/styles": "^1.0.0",
32
32
  "lit": "^2.5.0",
33
- "three": "^0.158.0",
33
+ "three": "^0.159.0",
34
34
  "urdf-loader": "^0.10.4",
35
35
  "xacro-parser": "^0.3.9"
36
36
  },
@@ -38,7 +38,7 @@
38
38
  "@hatiolab/prettier-config": "^1.0.0",
39
39
  "@things-factory/builder": "^6.0.0",
40
40
  "@things-factory/operato-board": "^6.0.0",
41
- "@types/three": "^0.158.0",
41
+ "@types/three": "^0.159.0",
42
42
  "@types/tinycolor2": "^1.4.3",
43
43
  "@typescript-eslint/eslint-plugin": "^4.33.0",
44
44
  "@typescript-eslint/parser": "^4.33.0",
@@ -64,5 +64,5 @@
64
64
  "prettier --write"
65
65
  ]
66
66
  },
67
- "gitHead": "93fdb854cd60011a20786ed3dc693088dbb751bc"
67
+ "gitHead": "dc40e0650da335eda0b7dab1ea9916f68735f623"
68
68
  }
@@ -1 +1 @@
1
- {"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/tslib/tslib.d.ts","../../node_modules/@hatiolab/things-scene/things-scene.d.ts","../../node_modules/@types/three/src/constants.d.ts","../../node_modules/@types/three/src/three.legacy.d.ts","../../node_modules/@types/three/src/math/interpolant.d.ts","../../node_modules/@types/three/src/math/interpolants/discreteinterpolant.d.ts","../../node_modules/@types/three/src/math/interpolants/linearinterpolant.d.ts","../../node_modules/@types/three/src/math/interpolants/cubicinterpolant.d.ts","../../node_modules/@types/three/src/animation/keyframetrack.d.ts","../../node_modules/@types/three/src/animation/tracks/vectorkeyframetrack.d.ts","../../node_modules/@types/three/src/animation/tracks/stringkeyframetrack.d.ts","../../node_modules/@types/three/src/animation/tracks/quaternionkeyframetrack.d.ts","../../node_modules/@types/three/src/animation/tracks/numberkeyframetrack.d.ts","../../node_modules/@types/three/src/animation/tracks/colorkeyframetrack.d.ts","../../node_modules/@types/three/src/animation/tracks/booleankeyframetrack.d.ts","../../node_modules/@types/three/src/animation/propertymixer.d.ts","../../node_modules/@types/three/src/animation/propertybinding.d.ts","../../node_modules/@types/three/src/math/vector2.d.ts","../../node_modules/@types/three/src/math/matrix3.d.ts","../../node_modules/@types/three/src/core/bufferattribute.d.ts","../../node_modules/@types/three/src/core/interleavedbuffer.d.ts","../../node_modules/@types/three/src/core/interleavedbufferattribute.d.ts","../../node_modules/@types/three/src/math/quaternion.d.ts","../../node_modules/@types/three/src/math/matrix4.d.ts","../../node_modules/@types/three/src/math/euler.d.ts","../../node_modules/@types/three/src/core/layers.d.ts","../../node_modules/@types/three/src/math/colormanagement.d.ts","../../node_modules/@types/three/src/math/color.d.ts","../../node_modules/@types/three/src/scenes/fog.d.ts","../../node_modules/@types/three/src/math/vector4.d.ts","../../node_modules/@types/three/src/math/triangle.d.ts","../../node_modules/@types/three/src/math/box3.d.ts","../../node_modules/@types/three/src/math/sphere.d.ts","../../node_modules/@types/three/src/math/line3.d.ts","../../node_modules/@types/three/src/math/plane.d.ts","../../node_modules/@types/three/src/core/eventdispatcher.d.ts","../../node_modules/@types/three/src/renderers/shaders/uniformslib.d.ts","../../node_modules/@types/three/src/renderers/shaders/shaderlib.d.ts","../../node_modules/@types/three/src/materials/material.d.ts","../../node_modules/@types/three/src/textures/source.d.ts","../../node_modules/@types/three/src/textures/texture.d.ts","../../node_modules/@types/three/src/scenes/scene.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglcapabilities.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglextensions.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglshader.d.ts","../../node_modules/@types/three/src/textures/depthtexture.d.ts","../../node_modules/@types/three/src/core/rendertarget.d.ts","../../node_modules/@types/three/src/renderers/webglrendertarget.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglstate.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglproperties.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglutils.d.ts","../../node_modules/@types/three/src/renderers/webgl/webgltextures.d.ts","../../node_modules/@types/three/src/renderers/webgl/webgluniforms.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglprogram.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglinfo.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglobjects.d.ts","../../node_modules/@types/three/src/lights/lightshadow.d.ts","../../node_modules/@types/three/src/lights/light.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglshadowmap.d.ts","../../node_modules/@types/three/src/objects/group.d.ts","../../node_modules/@types/three/src/core/glbufferattribute.d.ts","../../node_modules/@types/three/src/core/buffergeometry.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglrenderlists.d.ts","../../node_modules/@types/three/src/renderers/webglmultiplerendertargets.d.ts","../../node_modules/@types/webxr/index.d.ts","../../node_modules/@types/three/src/cameras/perspectivecamera.d.ts","../../node_modules/@types/three/src/cameras/arraycamera.d.ts","../../node_modules/@types/three/src/renderers/webxr/webxrcontroller.d.ts","../../node_modules/@types/three/src/renderers/webxr/webxrmanager.d.ts","../../node_modules/@types/three/src/textures/types.d.ts","../../node_modules/@types/three/src/textures/data3dtexture.d.ts","../../node_modules/@types/three/src/textures/dataarraytexture.d.ts","../../node_modules/@types/three/src/renderers/webglrenderer.d.ts","../../node_modules/@types/three/src/math/ray.d.ts","../../node_modules/@types/three/src/core/raycaster.d.ts","../../node_modules/@types/three/src/core/object3d.d.ts","../../node_modules/@types/three/src/cameras/camera.d.ts","../../node_modules/@types/three/src/math/spherical.d.ts","../../node_modules/@types/three/src/math/cylindrical.d.ts","../../node_modules/@types/three/src/math/vector3.d.ts","../../node_modules/@types/three/src/objects/bone.d.ts","../../node_modules/@types/three/src/animation/animationclip.d.ts","../../node_modules/@types/three/src/animation/animationutils.d.ts","../../node_modules/@types/three/src/animation/animationobjectgroup.d.ts","../../node_modules/@types/three/src/animation/animationaction.d.ts","../../node_modules/@types/three/src/animation/animationmixer.d.ts","../../node_modules/@types/three/src/audio/audiocontext.d.ts","../../node_modules/@types/three/src/audio/audiolistener.d.ts","../../node_modules/@types/three/src/audio/audio.d.ts","../../node_modules/@types/three/src/audio/positionalaudio.d.ts","../../node_modules/@types/three/src/audio/audioanalyser.d.ts","../../node_modules/@types/three/src/cameras/stereocamera.d.ts","../../node_modules/@types/three/src/cameras/orthographiccamera.d.ts","../../node_modules/@types/three/src/textures/cubetexture.d.ts","../../node_modules/@types/three/src/renderers/webglcuberendertarget.d.ts","../../node_modules/@types/three/src/cameras/cubecamera.d.ts","../../node_modules/@types/three/src/core/uniform.d.ts","../../node_modules/@types/three/src/core/uniformsgroup.d.ts","../../node_modules/@types/three/src/core/instancedbuffergeometry.d.ts","../../node_modules/@types/three/src/core/instancedinterleavedbuffer.d.ts","../../node_modules/@types/three/src/core/instancedbufferattribute.d.ts","../../node_modules/@types/three/src/core/clock.d.ts","../../node_modules/@types/three/src/extras/core/curve.d.ts","../../node_modules/@types/three/src/extras/curves/ellipsecurve.d.ts","../../node_modules/@types/three/src/extras/curves/arccurve.d.ts","../../node_modules/@types/three/src/extras/curves/catmullromcurve3.d.ts","../../node_modules/@types/three/src/extras/curves/cubicbeziercurve.d.ts","../../node_modules/@types/three/src/extras/curves/cubicbeziercurve3.d.ts","../../node_modules/@types/three/src/extras/curves/linecurve.d.ts","../../node_modules/@types/three/src/extras/curves/linecurve3.d.ts","../../node_modules/@types/three/src/extras/curves/quadraticbeziercurve.d.ts","../../node_modules/@types/three/src/extras/curves/quadraticbeziercurve3.d.ts","../../node_modules/@types/three/src/extras/curves/splinecurve.d.ts","../../node_modules/@types/three/src/extras/curves/curves.d.ts","../../node_modules/@types/three/src/extras/core/curvepath.d.ts","../../node_modules/@types/three/src/extras/core/path.d.ts","../../node_modules/@types/three/src/extras/core/shape.d.ts","../../node_modules/@types/three/src/extras/core/shapepath.d.ts","../../node_modules/@types/three/src/extras/core/interpolations.d.ts","../../node_modules/@types/three/src/extras/datautils.d.ts","../../node_modules/@types/three/src/extras/imageutils.d.ts","../../node_modules/@types/three/src/extras/shapeutils.d.ts","../../node_modules/@types/three/src/extras/pmremgenerator.d.ts","../../node_modules/@types/three/src/geometries/boxgeometry.d.ts","../../node_modules/@types/three/src/geometries/capsulegeometry.d.ts","../../node_modules/@types/three/src/geometries/circlegeometry.d.ts","../../node_modules/@types/three/src/geometries/cylindergeometry.d.ts","../../node_modules/@types/three/src/geometries/conegeometry.d.ts","../../node_modules/@types/three/src/geometries/polyhedrongeometry.d.ts","../../node_modules/@types/three/src/geometries/dodecahedrongeometry.d.ts","../../node_modules/@types/three/src/geometries/edgesgeometry.d.ts","../../node_modules/@types/three/src/geometries/extrudegeometry.d.ts","../../node_modules/@types/three/src/geometries/icosahedrongeometry.d.ts","../../node_modules/@types/three/src/geometries/lathegeometry.d.ts","../../node_modules/@types/three/src/geometries/octahedrongeometry.d.ts","../../node_modules/@types/three/src/geometries/planegeometry.d.ts","../../node_modules/@types/three/src/geometries/ringgeometry.d.ts","../../node_modules/@types/three/src/geometries/shapegeometry.d.ts","../../node_modules/@types/three/src/geometries/spheregeometry.d.ts","../../node_modules/@types/three/src/geometries/tetrahedrongeometry.d.ts","../../node_modules/@types/three/src/geometries/torusgeometry.d.ts","../../node_modules/@types/three/src/geometries/torusknotgeometry.d.ts","../../node_modules/@types/three/src/geometries/tubegeometry.d.ts","../../node_modules/@types/three/src/geometries/wireframegeometry.d.ts","../../node_modules/@types/three/src/geometries/geometries.d.ts","../../node_modules/@types/three/src/objects/line.d.ts","../../node_modules/@types/three/src/objects/linesegments.d.ts","../../node_modules/@types/three/src/helpers/spotlighthelper.d.ts","../../node_modules/@types/three/src/helpers/skeletonhelper.d.ts","../../node_modules/@types/three/src/lights/pointlightshadow.d.ts","../../node_modules/@types/three/src/lights/pointlight.d.ts","../../node_modules/@types/three/src/helpers/pointlighthelper.d.ts","../../node_modules/@types/three/src/lights/hemispherelight.d.ts","../../node_modules/@types/three/src/materials/meshbasicmaterial.d.ts","../../node_modules/@types/three/src/helpers/hemispherelighthelper.d.ts","../../node_modules/@types/three/src/materials/linebasicmaterial.d.ts","../../node_modules/@types/three/src/helpers/gridhelper.d.ts","../../node_modules/@types/three/src/helpers/polargridhelper.d.ts","../../node_modules/@types/three/src/lights/directionallightshadow.d.ts","../../node_modules/@types/three/src/lights/directionallight.d.ts","../../node_modules/@types/three/src/helpers/directionallighthelper.d.ts","../../node_modules/@types/three/src/helpers/camerahelper.d.ts","../../node_modules/@types/three/src/helpers/boxhelper.d.ts","../../node_modules/@types/three/src/helpers/box3helper.d.ts","../../node_modules/@types/three/src/helpers/planehelper.d.ts","../../node_modules/@types/three/src/objects/mesh.d.ts","../../node_modules/@types/three/src/helpers/arrowhelper.d.ts","../../node_modules/@types/three/src/helpers/axeshelper.d.ts","../../node_modules/@types/three/src/lights/spotlightshadow.d.ts","../../node_modules/@types/three/src/lights/spotlight.d.ts","../../node_modules/@types/three/src/lights/rectarealight.d.ts","../../node_modules/@types/three/src/lights/ambientlight.d.ts","../../node_modules/@types/three/src/math/sphericalharmonics3.d.ts","../../node_modules/@types/three/src/lights/lightprobe.d.ts","../../node_modules/@types/three/src/lights/ambientlightprobe.d.ts","../../node_modules/@types/three/src/lights/hemispherelightprobe.d.ts","../../node_modules/@types/three/src/loaders/loader.d.ts","../../node_modules/@types/three/src/loaders/loadingmanager.d.ts","../../node_modules/@types/three/src/loaders/animationloader.d.ts","../../node_modules/@types/three/src/textures/compressedtexture.d.ts","../../node_modules/@types/three/src/loaders/compressedtextureloader.d.ts","../../node_modules/@types/three/src/textures/datatexture.d.ts","../../node_modules/@types/three/src/loaders/datatextureloader.d.ts","../../node_modules/@types/three/src/loaders/cubetextureloader.d.ts","../../node_modules/@types/three/src/loaders/textureloader.d.ts","../../node_modules/@types/three/src/loaders/objectloader.d.ts","../../node_modules/@types/three/src/loaders/materialloader.d.ts","../../node_modules/@types/three/src/loaders/buffergeometryloader.d.ts","../../node_modules/@types/three/src/loaders/imageloader.d.ts","../../node_modules/@types/three/src/loaders/imagebitmaploader.d.ts","../../node_modules/@types/three/src/loaders/fileloader.d.ts","../../node_modules/@types/three/src/loaders/loaderutils.d.ts","../../node_modules/@types/three/src/loaders/cache.d.ts","../../node_modules/@types/three/src/loaders/audioloader.d.ts","../../node_modules/@types/three/src/materials/shadowmaterial.d.ts","../../node_modules/@types/three/src/materials/spritematerial.d.ts","../../node_modules/@types/three/src/materials/shadermaterial.d.ts","../../node_modules/@types/three/src/materials/rawshadermaterial.d.ts","../../node_modules/@types/three/src/materials/pointsmaterial.d.ts","../../node_modules/@types/three/src/materials/meshstandardmaterial.d.ts","../../node_modules/@types/three/src/materials/meshphysicalmaterial.d.ts","../../node_modules/@types/three/src/materials/meshphongmaterial.d.ts","../../node_modules/@types/three/src/materials/meshtoonmaterial.d.ts","../../node_modules/@types/three/src/materials/meshnormalmaterial.d.ts","../../node_modules/@types/three/src/materials/meshlambertmaterial.d.ts","../../node_modules/@types/three/src/materials/meshdepthmaterial.d.ts","../../node_modules/@types/three/src/materials/meshdistancematerial.d.ts","../../node_modules/@types/three/src/materials/meshmatcapmaterial.d.ts","../../node_modules/@types/three/src/materials/linedashedmaterial.d.ts","../../node_modules/@types/three/src/materials/materials.d.ts","../../node_modules/@types/three/src/math/interpolants/quaternionlinearinterpolant.d.ts","../../node_modules/@types/three/src/objects/sprite.d.ts","../../node_modules/@types/three/src/math/frustum.d.ts","../../node_modules/@types/three/src/math/box2.d.ts","../../node_modules/@types/three/src/math/mathutils.d.ts","../../node_modules/@types/three/src/objects/lod.d.ts","../../node_modules/@types/three/src/objects/instancedmesh.d.ts","../../node_modules/@types/three/src/objects/skeleton.d.ts","../../node_modules/@types/three/src/objects/skinnedmesh.d.ts","../../node_modules/@types/three/src/objects/lineloop.d.ts","../../node_modules/@types/three/src/objects/points.d.ts","../../node_modules/@types/three/src/renderers/webgl1renderer.d.ts","../../node_modules/@types/three/src/renderers/webgl3drendertarget.d.ts","../../node_modules/@types/three/src/renderers/webglarrayrendertarget.d.ts","../../node_modules/@types/three/src/renderers/shaders/uniformsutils.d.ts","../../node_modules/@types/three/src/renderers/shaders/shaderchunk.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglbufferrenderer.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglclipping.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglcubeuvmaps.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglattributes.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglgeometries.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglindexedbufferrenderer.d.ts","../../node_modules/@types/three/src/renderers/webgl/webgllights.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglcubemaps.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglbindingstates.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglprograms.d.ts","../../node_modules/@types/three/src/renderers/webgl/webgluniformsgroups.d.ts","../../node_modules/@types/three/src/scenes/fogexp2.d.ts","../../node_modules/@types/three/src/textures/videotexture.d.ts","../../node_modules/@types/three/src/textures/compressedarraytexture.d.ts","../../node_modules/@types/three/src/textures/canvastexture.d.ts","../../node_modules/@types/three/src/textures/framebuffertexture.d.ts","../../node_modules/@types/three/src/utils.d.ts","../../node_modules/@types/three/src/three.d.ts","../../node_modules/@types/three/index.d.ts","../../node_modules/@types/three/examples/jsm/loaders/mtlloader.d.ts","../../node_modules/@types/three/examples/jsm/loaders/objloader.d.ts","../../node_modules/@types/three/examples/jsm/loaders/colladaloader.d.ts","../../node_modules/@types/three/examples/jsm/loaders/stlloader.d.ts","../../node_modules/@types/three/examples/jsm/loaders/dracoloader.d.ts","../../node_modules/@types/three/examples/jsm/loaders/ktx2loader.d.ts","../../node_modules/@types/three/examples/jsm/loaders/gltfloader.d.ts","../../node_modules/@lit/reactive-element/css-tag.d.ts","../../node_modules/@lit/reactive-element/reactive-controller.d.ts","../../node_modules/@lit/reactive-element/reactive-element.d.ts","../../node_modules/@lit/reactive-element/decorators/base.d.ts","../../node_modules/@lit/reactive-element/decorators/custom-element.d.ts","../../node_modules/@lit/reactive-element/decorators/property.d.ts","../../node_modules/@lit/reactive-element/decorators/state.d.ts","../../node_modules/@lit/reactive-element/decorators/event-options.d.ts","../../node_modules/@lit/reactive-element/decorators/query.d.ts","../../node_modules/@lit/reactive-element/decorators/query-all.d.ts","../../node_modules/@lit/reactive-element/decorators/query-async.d.ts","../../node_modules/@lit/reactive-element/decorators/query-assigned-nodes.d.ts","../../node_modules/@lit/reactive-element/decorators/query-assigned-elements.d.ts","../../node_modules/lit/decorators.d.ts","../../node_modules/urdf-loader/src/urdfclasses.d.ts","../../node_modules/urdf-loader/src/urdfloader.d.ts","./src/elements/urdf-drag-controls.ts","../../node_modules/@types/three/examples/jsm/controls/orbitcontrols.d.ts","../../node_modules/xacro-parser/src/xacroloader.d.ts","../../node_modules/xacro-parser/src/xacroparser.d.ts","../../node_modules/xacro-parser/src/index.d.ts","./src/elements/urdf-viewer-element.ts","./src/elements/urdf-manipulator-element.ts","./src/urdf-viewer.ts","../../node_modules/@types/trusted-types/lib/index.d.ts","../../node_modules/@types/trusted-types/index.d.ts","../../node_modules/lit-html/directive.d.ts","../../node_modules/lit-html/lit-html.d.ts","../../node_modules/lit-element/lit-element.d.ts","../../node_modules/lit-html/is-server.d.ts","../../node_modules/lit/index.d.ts","./src/elements/drag-n-drop.ts","../../node_modules/@operato/styles/dist/src/headroom-styles.d.ts","../../node_modules/@operato/styles/dist/src/scrollbar-styles.d.ts","../../node_modules/@operato/styles/dist/src/spinner-styles.d.ts","../../node_modules/@operato/styles/dist/src/tooltip-styles.d.ts","../../node_modules/@operato/styles/dist/src/common-button-styles.d.ts","../../node_modules/@operato/styles/dist/src/common-grist-styles.d.ts","../../node_modules/@operato/styles/dist/src/button-container-styles.d.ts","../../node_modules/@operato/styles/dist/src/common-header-styles.d.ts","../../node_modules/@operato/styles/dist/src/index.d.ts","./src/elements/urdf-controller-element.ts","./src/urdf-controller.ts","./src/index.ts","./src/editors/index.ts","./src/templates/urdf-viewer.ts","./src/templates/urdf-controller.ts","./src/templates/index.ts"],"fileInfos":[{"version":"2ac9cdcfb8f8875c18d14ec5796a8b029c426f73ad6dc3ffb580c228b58d1c44","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7",{"version":"0075fa5ceda385bcdf3488e37786b5a33be730e8bc4aa3cf1e78c63891752ce8","affectsGlobalScope":true},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true},{"version":"09226e53d1cfda217317074a97724da3e71e2c545e18774484b61562afc53cd2","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"8b41361862022eb72fcc8a7f34680ac842aca802cf4bc1f915e8c620c9ce4331","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"f35a831e4f0fe3b3697f4a0fe0e3caa7624c92b78afbecaf142c0f93abfaf379","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","7a32eb197b39b1829c1e0490e89203a439c1a363991af2475c08b2fc53acf8da","c8b478d9d1d428629f4c914615780341ee4d7206fff1b466087334fb52ba0a4a","8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","4ba733d1a5ff0a0779b714468b13c9089f0d877e6fbd0147fac7c3af54c89fe0","95dd223a0a88794a2952026a9646588f35e2c787f61526358eb02f3a437beb7a","03c1ba922efcf544e679109d43545730f85b9fdde57f87dd3afac25cb40cc09b","6cab3eb57ce7f6d601787f36f02c4df40a342263677eef4d4efee9ea890f2685","3eab9fbccc64fe0872d888dd8510ae88971047cf8bfb14a0e6d46fd5ce612333","399ac4698dfd89331385152a1d403a46461e351f8990ed1d09bbf9a9bfbd88f6","2d1dcfa89b8f6d11f04969ad4c2f331ec8540f1acb1ee6848c5c40e41ed17dba","02de88c755088708c8c3779a1ad877c3f999aef3cacd39fa481891db868d1f04","963a9471a9284153a6deea05355e87d1db73886d39518a76c728f23fc5b356f6","5ee23a210de09c06b46acc0a1a0f7b90abd698f932427fe399fdd268e8d84a1a","91a090b01185b9bf00bb941b6a6a85ecf0b435ef5a39fcb74c0a07bb027d5825","4c136da3b1dce49c12eac152699c6b4bc64fa93d6c7224a43c816f7e51b00930","bfac6d6a4817bf56d574b1f32b174f655e05ce45c5ddf6d17c9b592660f10935","e1a25d9a4bcbd59a0899f2e0bf1bc92287974766cb437da40ecf27cd33cd7c8b","750bb9e7f2e89960f08df8df1a25b10608c276d3e15b9c794d8005f33786aaeb","da0495349d8653a4c5d944ce1298a1cda8911f4ea6754114c446ec2f71ef2364","fee7909c29e6bee56401b4d18bed7717e5dd1d1f03c037ce00294d6df149682e","e556b9c2f7324a35ae145b7b189420eb56da7299332671af0a49a262f6cbacf9","316ee93fe28d71f83b722afbcac40bf1c4f946cb6aee2d3add8325a82a9fa404","7ab3d4322d57eb4ec6548d6f91091a0be2f00d851af39a2755833a8ad094a0d2","145827dfe464da4120af0b3b9c3ff34c8817ccc8c4f27c7e6cac940fdf705668","ae046314c0651da4a01e9e48ddf370ce9d22ad21f48962f25a12c1c09de9b01a","7ee203b4d40378e2eb5ca9cb55d8c5079c76f08bce00cd92b623b59029e7a2bb","43b5f94bc861b388a6bc5bc2523c4505b6a7ab79aa7b1653c50c84f792ec08ab","f2dbde12c2baa4028d460e94dc15b1bc6499ab79be9c61f8f49f9a0a48650c96","95381db7f7685be06632a396253ea99ff00d71e35f89e897cc4c6789af816df0","d999c1b144a6fa3d6388cc40fa9d903013b06c37ec27944a4d2300949afc9f3c","d685b20127a4b8beef57730474946b7e294146b612d420f78947dff41fa86b77","f3d39aab18f5660741c7391de511ff24d4c8227825b6703fce2d42b598a8ce80","fdf87d6c8488c846c91b7d09266df7bd37364bc5f93f1de3a7fa0ae876e68ad9","65a2e7f5e1d8c04a7b9374d41c8e9942638e7e295bb5d320afc63579749a4660","89c0b39cc1e9dee0c0233f656fc0aa64d1e8ce9ee0774c4b84286bb626c735d6","aa923814904a58ec8b4488cb7a97ee08b0d3b23bd312b1dda4c377b57b2804d6","0a26dfaae0cf59c8c272da720634197818e5ce6122f62749bf26aa6572c6f209","e83a9eeb57262293ce8999ff3c1ded393db453956da3dca895e118a44c457cf1","5336e4a16ece0e64032b7fd35cdaf3b0e0024867e931499c7a481e5341b7ddea","e03f3d871bdfbc6ad134bbfe6783d28d8247943c579ee50b66d786479ef24bcc","694f0bb7e346e2177135edf481b62f64935704f19b193942d8581599df4a25be","da13df0437a5106a726ef1b8885540bceb3388f4c37d6b88b5907d3a7f6d1603","e3989f9bb5218384f10b8f4704b8aa9e52d62ea501f88a8eb37d2731a3f7a7cb","b71e7f69e72d51d44ad171e6e93aedc2c33c339dab5fa2656e7b1ee5ba19b2ad","3a637982838f73a171f74caf4ea4681386f91cfea6fbed895e07a74e4c772ee4","372ac80d56ad53adad549e11f094a82219b89ba7d3a0d184941561b9c94aac06","b3827763b33e738c6be2cf12e1b473befab1ec69ea3cb642ed7a72712b62aceb","7a7e77a1c78d83c198d5eef1f0148ba790f356decf0e249221250fef8e894ea6","281eb8e4ddd65b6733cf1f175dd1af1bb2595bbcea7c12324f028079ba78fdf9","3ec78755b5883ae66f14bde830fae190f250a9558c12c2b4dd5fb3ff8bb457ae","c44fe5799b3a05dc72a9421144495dda99093fda4ec3e0b0098ac1790e5360bb","7c68faa2aeb8af89ae236aa1ecd517822a4a637645c7b19d8a26b5be01c417bb","d690bcc44214afb9c260bd2cfaa5dd7297eb46b09c479c9c854d9821fb8072d0","9863a668f72971f2836d7584b3389293ad4234b3161c626267e1ee0c4144a56a","0df7497ada3a4f6459420803ecf7e555f1ad1e7bd43c1e17bdafbc34e19d7162","a0d260351474d327b580ec09d643189f310b4872aaa5d5b64ddccb39e3dbcc52","a956be06a9d4b02b087d3b43e5c3e6e3538b7cbe77c62ca50a57ea732d3f1f41","a5c1f85731e1e406f0547ea24113fbb98b6fa8efa243519b2475a17098e9dd67","c9ff6c188a074f36350d0636bfc637c7e6d773ec24f7af147ca9d8489503e438","6e16ba58508a87f231264a5e01b0859669229a40d6edea4485ac2032ddf8a7c6","147347fedf656a4aac31daeb8d20b86ed5b9e6a43a421043dca76c0247033757","c376bfb883a59809feed5c6054acc5a48e26c6ddeeb7c219c23dd52644fc978a","56c79f2aa23bed9541951354447ed77cf9c010b8f5815b9835b3563fe58bbb74",{"version":"ed3b127a8b57ed2511d0f3ef1ceaa4431b7e2fa0fe73fa98682c18f863e1a9cc","affectsGlobalScope":true},"237622915050e6a2c44651433a31892e4d177a1ce90fd79fdfd71e2bd3d93b22","75e7593176d42566e9270f56204e9703d3554822b283c3a9292e74d883224e85","4b2891882de1de6d740da442154b5946b1bf87e87b7f0e9eb2e17143602f3cf8","2ee9da57ee1ce2e3b198184b30149d2be321148a8d7c37258adf28dd9a8040f9","a0a11708cfdff7d18b61419b9468187366f9434f2362dbd479d33b3ff25a25db","47a15d6ef220ecc171a1984292194383e2d30aae2632b65512193af33bd3ab54","4f6a33630204c7021fc23d1a594ee87875b00d09223919015ee65c0051181d0e","90770bab02020de5bc13690a0da5ab91f4cf8c2f30483889096de3ef0c665376","d3405ffa6aef8041ba77c7678f91e9bf59787f5332556b2d4af13c67bab73d89","4cb8864ad5523f22885f0775c3b2accb128f263d4bff63085aa3afbf72cf7744","e4e958a139b2fe420fc385c0c3affc799b8377ea6376ff260811664baee86873","614a0e21cf6911adb5424bd3918d9ab851c3cfbab8b9a237939f66b8b98e5dbc","f8fc18cbb63aaaf5738150729d25fd042b0a8c378a77474b935858b5fa1f37e9","9281578561706347a274a0ee32665735a672c9df0cf73fc21b980b227853c679","1271d2dae4d4bfe0685a9fba10b17babe7eab844e24360dc2f7e9a5ca9ae3cb3","51888e9f4d02a78ef7838c4b911f656a17ee796c53ab9736009d0cba0f645e15","0945c427f4bef98bbf74f0a2d94646ba7cfd8906ebbf9cda34ffa76976bbc1f3","321bea8aa0c48b3a093413164a85c863f9bb24d28ef29fe11a80b1861ff77209","0e6b3c7f300f6e2587c62783ebf78c74e61e7e85d37591e1e1ecf82cc15adc01","750e649255c82a42e00089ef40d74aa0f8b452f9e850b96d4afb106066163d29","0a43c5338c3c3833c1725afd837cda31479aa3d937ca05ada2596a0b6678e902","b90f14bca14cdbdd60dc83c451aca97e8df63c8eb8a158a9ed84de4bfb4cad76","bb2cca9762f2d50723fc5da05bd612b055fe85db1a7f4744565904ddb1eda26a","92464dd9dbc5513d96edf8d211a138e0f5412b45069382b6e9ad02d51423ed93","8b34c6543a03d190137fe48fba44d0ba3ee465f58c857b031728030cdcc9a15a","6f7214bea2c7d1b77c00f1c1ebe05c1b30a2c8ab22b2daaeb4eff309797351b0","64d72aa294c19d78df3fff411141970f6880af4b8f4b5b2b6e2b2a609453f5f7","2dc6230dfec1968a119d46db782bf792554bb2ccbce04858ef29bda03bbb9a32","31f638b6883bf3b0a62e9a8ab8772ed1992b495ff97b9d3f39b863d3048aa53d","66f3ec941f7260bc9998347d626b3df7c7d8ccd4034494297104b6d500818604","59602972d2f3b60c7a5d12c994af5f805a918f3d8e574b7fb2d6fe4680625320","c91b058ab74323c57dda1cbda7eb8cee56272002249a642deebbbd977c4a0baa","2e72816e22d29b7085592d2423b27171c3e83642eb923abb3b3a1572b2ac00a8","845090e45db658c181c8800203a6e976b2ad24dc425f8cc79d69674cab8b1bfa","e2b4b04acb9b64d3e9795c0987970e2868def21dc3f4eaf5b9b1ba656329fd90","761374b32869f1ea51bf3498de89c3239238efa340b66f5806ba86493e4724db","6c7f1a4f3d43a47624bdf26e93be7be9fe29cda02de5b53b83f5c7559ae07745","fc6f25fca11763217a7d13bfd9b036ae09eb4dbe19cddd4141d4d57c6ef720f4","af47204b1ec2c013f5520e0638af9ba2a93a620a83f193fff6f79aeaea55a6cb","b7280b4765bbfaa74b0fdf776f0b9e1178c48aeb388fd9bd87cca27b0697d745","dee39fcead90e57dee0d18e5395811478d0b59aa781b3533395d5a39318ebed7","89453bf5bce379795ca27c784c999bf28a40eaad7b8c92b479db278983b5c28e","a63ed6a4371ba782b1c94233559a769deb58152be7fe2629b634637fb10fe45a","d87f2c6ec6267376c38befb683226290fd46c3d0177c370e74abc175ec7371ac","b1da21c4c16168b2d474589a0b8c9a824f654bc4f2f49a569af02f2333ebb3f1","7a6bc8429ae26ded02557492d43d6b4e66e827072363b2c9e47bd847dae73b97","920aebc71a71213155c6e33073fded97156676b20882182353ec820ad5efba09","96de8ab1279044f73f0622ae931fa064f59dda2b650537a5e6e34787e3525346","f96d2f63924a3958a624de632af6721a1f9054770a7d21b59946b551f75e485b","874edfd57ac73b2e8ca5471c46b2177f26f92c3c655590071fac9cabaf07c0e0","c81036d8b14f8d7e1bcd6c34e246bde12c9fcf235f3fe298e97ea197944db423","9b678c8925219b091e533f4313015e0cd862be55c4f3e2795fe5f8ffb0fb8a2c","48d3d77b6460817df385326027b63394413635095bf77b886254e5029e57559a","a28f24327da93c2de0c0497e68fd2bb0a861056444151f73b8ececab20c0c078","4a71560ab2a642402c9d2c8714f7b189a1bb86f6d29b0e99327ac207b33bf14d","27aeb513135f10c0fdef4d3efb644b2cca7f680041a61ad2303df95594f41bcc","7fdfe7876d7c32130fef2c5b4fb85ce7d9efd876278f534c001ff7a2f54835bc","10414f6188dbeec746561f61feb703841488c5a510367e5a7a362ff42db5b523","631777027b2b207a98d64309b268cf0c8d8a04960711549fe9b7cb4ae43853e4","d5a459c9b335cb22cd9dcc7a6ac20f9f050d67456354a8769c8385993caf706e","bfcfce0c5192fbeb884e2c54c1504a480377209b4fcb0e92a2b8514f8991ae74","ef9bd226f7784ba266eda5a3c1eaf97ff90143cf761bdb463e8472bbdc6b36c2","0e9716057f5eb64b608a034a56090d9caef600b562283817d824b1c7e0cf8552","e9f5d6a979605019e446a66241fefa76c49b2a49d04ed8996cdee58dfb6c65eb","af76923e0e2b2a95b8a4da1c910284ab566d97c16af24281cfccd19750132d67","2a022487334490ef69ff07c6bb89c3d4f70193cc6f94622f57d6f0ffc0c6d298","fbd27baeb43437c5c4c01ea87bcb20620b38ec6e11283f2a71ede7ba3abc2c6e","4c8ce383c351cbd54a8e5ff44c893a43d8c8c68d1cef61167cd5095625cff7c4","fdd207b8ac2c0abdea894df070421b5835f1529815851186ec7e48ce54774601","c0bea3a09fded8316db355b690c5b698e4916f1cd1666a8d36cafbf73a2bba01","55a10b1bb1e505e91541c15fb684f9bcfdeb9c3a3b87b54f09d079a4e4c7d9ef","1e377a4f9f8c19b3cbfc8f679005ad884c961e061867796d534a051479e1295b","d923a1b0c91613fdfe207efa77df804cf80260b7865133487968399eb5bcfea9","4e661fe76594704be3921263ef1b1fa7fb1926951edc548252a430c00b77ed90","067d9f3ac5b6e0f45c10307a43864cc269a8f40268d4f320fca78839e0c29d41","5b6b3258f44a5b0bc80a7c52f18be3ad298f79bdfccede5d292bc34748592204","9b579af468bd4961aec31e509570287c158db9e6f9da954c2b03e5dbebb71bd0","a64a3375456530b287c900f9bedd8d4945e69fa5127bb3e15541f57b91f48d90","420c4b3760fee9e232a2295bb895fd3cdb56f82ee7f53dd8ff4d3250fb109e6d","e89a1b90600c34f039283f98174d026f4b1f8e10ee1be8405f2fb3e6b0a64a5c","3d3e8b18afa06a73d61be024dee71cc5dea9d11dda8e804847019eb4fa9b7cea","03b3bb3cf94b1b93df7f3ff9e15120cef0da62420648e8f7dadead91f30bb4a1","fa97feb9a38ea08575544b1e5aaa3cd7c7556ba6009f7d7e81cd93f9547c46d2","2318094641c2a9a304c9aeb22d65bebec50d19c33ccc7717897e164bf607af28","cecb07a6331be05a4cc65ee39a688e1a9c20eb009954c9721d6aec4a3dc49879","a4f0cb9300217ca7d082d41b1d8c35a7c31af310533bf1ac119b824ec1da4ea0","f30ad5116884fad360ded54ccd1d6ae7e75cf0d407ca8040a0497688b229d6f0","8d29032943dea7e3e25a8be775331fee2caf0db6d47653822a3dcf93ed99ebee","70cca9a58bbb35cb543d8926468a6c8eb227ec91cd2bcd855b861318b7159b53","9faed9b8aa314fa6b6f733bece4dcd78b0df8148fbd83bbf166d76a5fd60c685","70cdeaa2857c52145a492a3c1a3963651548b1ae64dc40b6447ecaf906a48df2","7471e35ebe553f53a7e04246f0f328c6573817ec7eb4cee2463c26f2214282ee","0f0f4284d59f61163d4a57a2fabeb00d18d67949492902a4daa6e2703f664800","fa06e4baade3cfaf2d25f92bfeb159730feb8cffa48945d350c27adecc58379e","c2bd2eea3320741b2e12392410ab629b858664f9dfb0c3f8e56c6e65f9e3d693","abf90f160316decbbf59f4b64ea126d2f14f33cfe21a645a8395f1f733284d9c","11405fa916d10c10f067a3d9d719909e63e15349bd7c89b2e5cf48cde534fc04","bb65dca260eae1d22b0aa826fcdadf22bdc0e2d1c6ca04093c928304c10b6c0c","07c61bb85b9fcb145fbd39ff2a9e80ae264944ff34f7252dffbd0deab66321df","d9aec7e16b8830cd7925e915ad5f19702775ec4ad4cc932bb4ea368c6bd1ab29","5b6be993bcfb6805cd42de3b38a7f79ab48ca16799ef16c37396c842b8ac9908","5f49fc58efa8bf9de2afdb1744dc4bd285f0ff60acd280dd7abd96e415f7975a","b71882233d78dc381159b1661f0a99c2d1a5e713668da495885fc46fa40c24ee","9adda05b5211444131473aedf5dd7d2736e005f23d9fef0120b9f74874bfe0af","906ebd05661fedaa5344d67054580395af8602752c3343458fc9800457fec991","c65cecf1661dfd9e694332d5396f3319e10b1e3d7751e71fd3bcb307400a9ff2","29db2fa03e23add586cac825068e8e22b3439fc66b71ffc8537d2a48cc7643bd","db1d65581c58042d0a16403b54daf21592525721c68095117db78d0fe25713ef","7c2b5fa6041090aa1826a87b6c21b1eceb4c418c11f7a936cd9bdc819c20c55b","8f6c3581bccf56f130fd5408e839ea1a63172d498c43dfcff9fc881ee371f0c8","6ebae636e07042cebb020105727a104979d87dc21b0d4e1bfa75eff911dbba3d","83edee1b9d369713e5accd4166aeb4edb8a02fcf2ff8c8d28e57d33a7b96cce0","3785f670c9caa13856e9c0c4acbb92bf2c5a3548dd0989ca59bbea38d699d8e0","083d164da904fead4683724395e836eb715a84c87ca5c062f81a5f4c702ba9cc","95f46d2a3bae3688654fa940e37dd2dd618fe06ca889527002909db57baace3f","9dedb590d54490977c29b7f9d687321bd1595c1d48a71b9bfdc87367f42449a1","038fc92ca9f7ccc61dbfd53ad6887ccd032b11889f4d47b6ee44a86f57c462d4","c7926545fef5f08d9edd838374f598b9ed3d3da19f9fe65b5ad7950750e70cdc","21e9aacae646c52d7addbf1314d97290041f70e09558621f75aa9678188f8662","c427dd3883fd7424aeb96ce55dd60221a710de01ce87dea27d6c01779c7a44f0","9e713d85d5097e743f8434bd96933e07c79c4ebcf2ad2c4372d994c7b47ef470","e9978c16ad9bab6956c253a745b66d05d5325b6e170dc993ea2a9d32a5255b0a","a8a3236e70985110a8e73f6222709417951a5393b85048ebcd9504fcde47e8ee","13883804d586e6cb65156fba20c32a2195627d6778ae7e91489556ad29ae448c","918d8a7e8c9eadeedf64071319ac1df53582960d2e9e4475a517f3b4238dfa7b","eeb3ce8c1a584f0718a069573b7e366390d92ad55ee75a31944f32b15b895b2f","fe605c9e09b87c3032c78e3728f1b06f3402c3377dadde55aa2a31b325c5a977","57f2d9377264cf90b169ba4bbbcee8135d1350d8523d60a41d5523cf8456f226","68c0e549b338687c32d4cf350fb8bb0c7ae3e62a1218b8d7cdc7a2ed81233f99","f90e4739b4c7a0651b4f0ae0097f8065f31db79a629b505d66e0b92c60c80b05","0b667ce7bc9628356f8bb89316639c08769c5733baecd8d2e424982f6e904eee","2812fdc0a0d0e919c332fd61b505970e29d04c7b6145cdfb1f9e3a83a6f015d4","017699530c6931f88ad49ad9212a5dea86548ad4a699924d0d288eb299d39ac7","79a1280101e6e0a0e4fdd22bec7aba56889cb2a829b62d4a3d6ca4c7e31854d9","e976c9989b9455bc6aa6752b40331ae821348db7fa10743ef763749f4c829abf","29849b5d4d39eddbdc61080d274b830efacb8107bf743c4c112851c5dc3af3e4","a6847ced38eac456785c84333be57980d92d7101c6aa9b15d75036f251301fa1","aa5599221fd6a698425ac2ab62269c337fcd1367327915fcb3d47551ea7ef965","8f645b50c891a5aa0a3d5f2186a199b29b7ef4a1ee9005ee1a9b84cf8284e50c","bed5bb27ab9ca7b546aca685920d4c8532e92774e99cf4adf9cb33470c160b9d","effbdd68fca89289e2f166fb1811fbfa37316849523d7259b78cf72339c5af1e","32ad94427e85fa22ef7c043a1d70e92b5b54798ef48ecc230116d177cc599d96","062b7f2f0cbe02431ff93f7c006687335bb2843c0cd9553108e55dd9586e5e11","e368a7470fd37f3e5967e5605b41bb1070f5b22486973e4646f6055fda0d253b","5547a7d3437f2399ecd17b6f8fca3a9a0c5ed11b1a8c3514830f755635649c25","05b1cadd6cf67a25eee4336e22403900e3813b21cb87bac30b2c89c5a75d7000","29eae012b966ef4c1aa30f8d403dff188a9c96d2998acccbdd1fdfbef57ed5ce","0cd5716d2d1ef1e3f62621e37dad79733bcc84136e3a5942b4756646edea5dbc","b5e58c430984c7948541bc7a3c48d773a9b270945a57a9829bd035ad8793f877","2199bcd1ff2d7873e0d4a3a24aaa12027aac96ca76e0adddd298f267bf1a23d6","5d7b5e0b74bc8bf22bfb9eb57e4a059f62949bd23a639965e13ef6adcefa6bb0","9aa07f8d56bc4a2e10ec2110a480533cb5b892884829fec43f895c3d50f8f5a5","a48464dc2652d6f181f675fdbf4e0560cb0aeb84eb3652ee87b9630fb7a0965c","77ae202dfe1558d0eb6e392e6421b2748505fd6f297cafcd053f38bbf11be8ca","0ef21aa2ed0ca4aa8a758cb473167f02536025bffde6c755fa3b0185fdbdd81c","2696ee6e683dacb9698dad8c6870f9f7bec5be4564378dc4b8f3dcd185a12e88","7f36e7aadb2947402b427e565916c7c6abfde7626b40f15c9d9eba8e539fd33e","c5620f4d6635786cb28a2672e23264886b142bee21d5f476cb87f12391dc74bc","20013bd15a89cc30da0b0e625f0b165f42356a1cdab07c33b9e0ff02f3ee129a","861814c035d92c965c74e48e7220366d38905f7790ea7eb3f353466ddd0d67bd","be8c7fd8c9af306e3ea3dc076e4a5ea6b85c55eb29e1ccbd15b262f2ee5decf6","ef8083c60693c998fa27d3d42feec41ffc85dad72be62089c0552e0d0ec579ff","32d609124a74b698058d95460e7099a5d67b5b222a4c799dae5a557331c18a7a","ee60f5074ac49395b378605abab5295097006d76ad3247ba0f8ae1d40b7eeefd","bdf6cf9fab63fa7009882379a757599940472929be4b64fbaddbe946b9a78f83","9b45fbf5e5ba1af4506ab5af042fae9a654c2e11ba59fe1fb90daba38a9fb61f","2360668f67c85a1ea07864282b797189555b9b9928be94685773ed8381302588","cbe59fa1704631166b573582b1d302adf705f826f38fca2fdbfebf731d450f00","fbaf22ba88529401e0cda81f823713e0f9b74dc108e9b787430df32ec901b830","9c1766794c011608d30bbbdd8a6d700c91a17cec332caac6408c50f80ad5f57f","00bbcf2701d5176b13cb90483a7ca8b5841050d644340cd1667d6473ebbfb5ff","1e9be9b5404530d965fca7d4ced40bc2604dd9b076f1ed360e1e5575607e07e4","34d98f7ce1ca0da92c5dee4295e98b275115326721fbc7268e2747c1a084c494","9aa87301869fd4200a82a7870b5915cf803201553fe81912aed93f2969a615c7","835b1bb126d1e0562e2c54dfb86bbf8a9981e360bfd5d03162f1bc97659411b1","34916b0468aa34e0ea7b92ba0aa8626d4788720980c8a992c7bbc3b29c75ad66","5dde989aaef166fab046154d46d615ec1701e0900087f1db934ccb886fcb88e3","3511a82a6b64f052dc3ed0719cc7c0f2049b2f90ba680b29862b01631c8234de","1e01663724499a0980f2a5461f2a50f894fd371a27bd349103bbc69990c67ef0","eb175af2cc09478d270103974d96be3473e7732f34d62a3d5ec7e7d32738f2a7","8ac69e19ba687c785bcf92a060bed497ef072907b3103bc33203557b953768d2","71fe82fed18516114197469a5e2c24d73f52a1ed8f263c0568401ac508fdd50f","8b393d701e52cdebc6339e4491a54250bad19feccdeae30c05c2dbddd3687158","56a5838286bc1b08b307ed444d5138d3164214704ff881bda510aad94fa231de","a34f62dae3cd7d09c9a686de077ce27872797ea714eba16506855150c8299abf","edbc6dcb588edbbd8dc4841232e4d240131bb4b9ee26dcc81923cdb2c255917c","1ef9cbe3e48f34032d4334336400001beb66bdb6a3194011364ec9d693b92dd1","e59262ddaae67dec2d226f8a5d05cf6c4dc353c0d9b1e4980a61d7fcf9a2b051","5e30131b6a5587fe666926ad1d9807e733c0a597ed12d682669fcaa331aea576","470b8c2386c916bad4aa0d05e89b271a47dbe1250cb25dc0f93102b457228dde","2a8f0a19a927e83421597c056c90695557142f54ca96358f01eb1f2a5eb228be","d08415b3d6d7fd153ba6e7bf7707ffc57f3c6ad85730ea63544756610b4350c6","411f23da7a63c3d3fd4860c41a458e8df239776fd5d9cd36dd3ad6be92afccbd","6ada3e065916c0ef2dbc9bc0f9b5d59afb25d9176f81fa2c8993a536924140c6","356cc1b058e05e07d2acd73bfa87f83a6f4a343450ee375dad232ff4a55d41d8","df286e6b181ed08766bc19cf1a2fddc50bc5d540f233bc1ce4430a3c1c8c8379","f436800c0af503703110c93144fcc7392524636fb4216296411243b29fe0162d","0d5002560b45ce4fd6c4124632f61789e584be0634602486a2ce59541311d153","bbe13c947d7d6c3426e0e5815e2b3464fa03d34a4bf47298c43b9237cf59555b","9f7d0ee33b9f8fa4dc2e9628e0cdf8683104d01de9d3d24f62cd5da014a5bec4","a8992b852521a66f63e0cedc6e1f054b28f972232b6fa5ca59771db6a1c8bbea","d5000b2e168a9c163611de83098009dc5a56ff5b763de242e8cb3f591a3530a8","bea3bf1b189bb8bb83955d083b62ccdcb836f5b06d51b55aaf52b4b4b35642d2",{"version":"59b58fb30a47cea4cce02d6807322c691f559e554f74dd61507f3f1b9e772e2d","signature":"ff25d7495644b3014e95139925f0d42a8172edc645b1755fbfda15f42ee29456"},"69371af4dc98709b0c4a54f83cab6d52e7a1098460927cd2312b703cacbafddd","d06cc651811bd5cdfe9c1b00566c87b70a19b17273dd27407d973ca8a59ccd21","aa7b2ca01b1c60eb9db32fe744424c18930fea62218765d28df72bc51436f8b3","ba87efc6df1dfc44d7e22de74c3ac178433fb665f208b9304e9e70db53aa2b0c",{"version":"2326e64a75102b4097661a7c48ca3a0c8599cf149cb9447b5f720815f6dfc96b","signature":"68a8e2f507d5df6ae1b2d02234cd0be7d669315fbd86d38ac4a0a04a5a9c40d2"},{"version":"607f181f823f98b6bb3b6235c1d807ff48694004bb9b3ee5911a6e4addb691a3","signature":"aa65bef561f615b6474a1931ab47f0022a228b9874cdac633f993eaf730159fd"},{"version":"924ef72e854bdf9ab567a9afca14b6f9ffcdb134c1985b9299c3c28184685c7c","signature":"7c1a4bffaa3ea16c053f2df968e56cd6fd104826ec9ec5efbbb38f42494fad5a"},"15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e",{"version":"a4a5a79b9d9b4e4dfa18279d85686fac7eb155b828ddf7a677ceb57f9384f043","affectsGlobalScope":true},"7000ec8572390d035ba5ef993953957150d0c38ffb31b56653c97dd78cb6e1aa","056892cca68dca10a914f1580ba0e5710d26794e8707225dca9b5717ed702f1e","4ddf3962990379d1ea59b369a5516c7533b7944010d6998e0e9b1ab35d5af1f0","1bcd560deed90a43c51b08aa18f7f55229f2e30974ab5ed1b7bb5721be379013","dc08fe04e50bc24d1baded4f33e942222bbdd5d77d6341a93cfe6e4e4586a3be",{"version":"223c771d15e3023074ddf664cbce03e9691aee29d337d3b7815403ebc371e929","signature":"e474c323c111799257e2e230d6cf7495951f409154a207dba8a6b80dacb6762b"},"cf93fb9208a01c80f0fad245c4360356e5de6c2384b7641acf0b9cc2f5c42448","336398b0efaf964124e636a9b29c4edd5870aee79ac64bf87be58a9d66b7c048","571bc65ec37ba124e762bb822e14a2b8502dc684e356be8feaccbd6b9cadd023","2bbbefc1235500bdb5091f240dc8cba861a95342272f7d11b7574a0d2ef4f85e","7cd455fc4c4818f19263d73b29c59f3fb5fd54b45a6ab83ca3eb3661281db56b","1c6b9b5501774a2ece6574be8e26092800e3f1f836f8c179b4f9fdd271a620f8","bcd2426fd141157e04e3a8eff914b575403587f398cf0878f07c2f283e0d1afd","bac8ff394e831e4dd3f0961d6abb414b0e2b4ba16fdeb502d087ebf0340ed5f6","b8965484c1a08eeac238cf02a1498d72f3f3610059570a2c0fd207eb34245146",{"version":"1fa0a16b7937e7598b4019358746a800adb6aeb99538412f64c83cf855b25bdb","signature":"640e1b327a3bbb904072cc136bc1428c7de3db7f9fa089bb7a70a80891879ae4"},{"version":"cf0e96cbcd290524ed92da2ecd597ecfeb0d3fc36f5d9cd0d1024ba1b377f556","signature":"0406442150c83ee79672f59e304b579f3b31c1a0fbfb8a36db58e91df77e7fb5"},{"version":"45dfee0786a308f5f61aa2f2c00df23b8b35ad3e7ffbeb885a804a43f6dfd41e","signature":"e6bea57d564c188e8b1c8e21adc0503329db3d6975644550e4590daed7c8e44c"},"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",{"version":"b820387f00e638331d28743f1e0f9b9cf415e41360522b3176c0ba4529a85970","signature":"8f017a2a1956f37846a0ad1a2fd4892474a057b3163cf9181478e03e2c646968"},{"version":"9435369b5b612a97f51e1b4eb5ac3fe26118dc14ec75127051a395409ee87e2e","signature":"8f017a2a1956f37846a0ad1a2fd4892474a057b3163cf9181478e03e2c646968"},{"version":"6dfc37059dd0fe6a2f4f5f1fc2250cea676b214e6eca6b7f1f5dee8539eb308d","signature":"e4ca4d8a87d3c81f481decf9000b72ba30371c8088de609814b2f0be74314bb2"}],"root":[304,[309,311],319,[329,335]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"esModuleInterop":false,"experimentalDecorators":true,"importHelpers":true,"inlineSources":true,"module":99,"noEmitOnError":true,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":5},"fileIdsList":[[290],[291],[290,291],[290,291,299],[288,289],[318],[320,321,322,323,324,325,326,327],[279],[279,285,286],[279,281],[38,111,117,121],[38,44,115,116],[38,71,111,117,119,120],[117],[38,40,41,42,43],[44],[38,44],[111,122,123],[124],[111,122],[123,124],[101],[38,59,61,111,115],[38,77,108,111,130],[112],[101,112],[38,54,59],[53,55,57,58,59,67,68,71,96,115],[55],[97],[55,56],[38,55,57],[54,55,56,59],[54,58,59,60,61,71,74,77,95,97,108,110,112,115,117],[53,61,109,111,112,115],[38,65,71,76,81],[38,71,132],[53,115],[53,138],[53,150],[53,151],[53,63,151,152],[139],[115,138],[139,140,141,142,143,144,145,146,147,148],[38,76],[76,77,83,108,129],[162],[164],[53,97,115,138,152],[159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179],[53,97],[97,152],[97,115,138],[63,111,115,181,201],[63,182],[63,67,182],[63,97,111,182,191],[59,63,112,182],[59,63,111,181,195],[63,97,182,191],[59,63,111,188,189],[70,182],[59,63,111,186],[59,111,116,182,279],[59,63,93,111,182],[63,93],[63,209],[63,93,111,115,194],[92,128],[63,93,115],[63,92,111],[93,208],[53,59,65,83,93,112,279],[63,93,185],[92,93,101],[63,76,93,111,115,204],[92,101],[117,212,213],[212,213],[97,134,212,213],[212,213,215],[129,212,213],[212,213,217],[213],[212],[74,76,212,213],[74,75,76,97,111,117,134,212,213],[76,212,213],[63,74,76],[191],[38,70,71,73,108],[74,189,191,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244],[38,63,74,76],[38,74,76],[74,76,115],[38,63,74,76,279],[38,53,63,74,76],[38,53,74,76],[53,63,76,235],[232],[38,72,74,133],[63,74],[53],[55,59,66,68,70,111,115],[38,54,55,57,62,115],[38,63],[115],[58,59,115],[38,59,67,68,70,111,115,247],[40],[59,115],[58],[53,59,115],[38,54,58,60,115],[54,59,67,68,69,115],[55,57,59,60,115],[59,67,68,70,115],[59,67,70,115],[53,55,57,65,67,70,115],[54,55],[53,54,55,57,58,59,60,63,112,113,114],[53,55,58,59],[111],[59,63,67,68,74,97,111,136,201],[74,97,110,111],[74,97,181],[110,111,112],[74,97,111,115],[55,57,74,96,97,111],[59,116,217],[59,67,68,74,97,115,201,253],[53,97,110,111,245],[72],[53,54,63],[133],[55,57,78,96],[55,74,78,79,89,97,111,265],[78,79,90],[70,74,85,112],[108],[78],[55,90,97,111,265],[89],[78,79],[80,88,108],[74,77,78,79,89,108,263,269,270],[74,77,85,89,95,97,111,112],[38,77,78,91,93,108,112],[38,65,74,78,79,83],[78,79,84,85,86,90],[87,89],[78,84,89,90,133],[38],[83,106],[83,107],[76,83,108,129],[76,83],[38,53,63,65,67,70,74,76,77,78,79,83,84,85,89,90,94,97,98,99,104,106,107,111,112,115],[76,82],[95,111,115],[65,71,100,101,102,103],[63],[63,64],[63,64,74,76,111,279],[38,215],[38,76,105],[38,53,54,71,75],[38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,101,102,103,104,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,149,150,151,152,153,154,155,156,157,158,180,181,182,183,184,185,186,187,188,190,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,266,267,268,271,272,273,274,275,276,277,278],[312],[290,315],[315],[313,314],[292,293,294,295,296,297,298,299,300],[290,315,316,317],[280],[280,302],[306,307],[36,309],[36,280,301,303,310,318,319,328],[36,280,303],[36,280,301,303,304,309],[36,280,303,305,308],[36,311,330],[36,333,334],[36],[36,37,310,311,329],[36,37,280,282,283,284,287,310],[309],[303,310,315,318],[280,303],[280,304,309],[280,303,305],[311,330],[37,311,329],[37,310]],"referencedMap":[[291,1],[292,2],[295,3],[293,3],[297,3],[300,4],[298,3],[296,3],[294,2],[290,5],[326,6],[325,6],[327,6],[320,6],[328,7],[321,6],[322,6],[323,6],[305,8],[283,8],[285,8],[287,9],[286,8],[281,8],[282,10],[284,8],[280,8],[120,11],[117,12],[121,13],[118,14],[44,15],[50,16],[49,17],[48,17],[47,17],[46,17],[45,17],[124,18],[126,19],[123,20],[125,21],[102,22],[112,23],[131,24],[128,25],[101,25],[127,26],[55,27],[97,28],[136,29],[134,30],[135,31],[56,32],[57,33],[111,34],[110,35],[82,36],[133,37],[138,38],[150,39],[151,40],[152,41],[153,42],[140,43],[141,44],[142,39],[143,44],[149,45],[139,39],[144,39],[145,44],[146,39],[147,44],[148,39],[156,46],[158,47],[159,30],[160,30],[161,30],[163,48],[162,30],[165,49],[166,30],[167,50],[180,51],[168,49],[169,52],[170,49],[171,30],[164,30],[172,30],[173,53],[174,30],[175,49],[176,30],[177,30],[178,54],[179,30],[202,55],[203,56],[199,57],[198,58],[197,59],[196,60],[192,61],[190,62],[200,63],[187,64],[193,56],[184,65],[183,66],[207,67],[210,68],[195,69],[194,70],[188,71],[211,68],[93,72],[209,73],[92,74],[186,75],[185,76],[206,67],[205,77],[204,78],[214,79],[229,80],[223,81],[216,82],[219,83],[218,84],[226,80],[225,80],[224,80],[212,85],[213,86],[222,87],[221,88],[220,89],[191,90],[244,91],[74,92],[245,93],[189,94],[241,95],[242,96],[240,97],[243,98],[239,99],[237,98],[236,100],[235,98],[238,98],[234,90],[233,101],[232,102],[230,103],[231,90],[249,104],[67,105],[63,106],[62,107],[114,108],[60,109],[248,110],[43,111],[41,111],[42,111],[246,111],[69,112],[250,113],[54,114],[59,115],[70,116],[58,117],[109,118],[68,119],[113,108],[208,108],[66,120],[53,121],[115,122],[65,123],[116,124],[95,124],[252,125],[181,126],[255,127],[182,127],[251,128],[201,129],[256,130],[253,131],[254,132],[247,133],[73,134],[72,135],[260,136],[265,137],[270,138],[262,139],[263,140],[269,141],[264,8],[79,142],[266,143],[90,144],[268,145],[89,146],[271,147],[98,148],[94,149],[84,150],[87,151],[88,152],[272,153],[86,154],[257,141],[258,155],[259,156],[130,157],[99,158],[108,159],[83,160],[103,161],[104,162],[64,163],[273,164],[77,165],[276,46],[275,166],[215,46],[129,46],[106,167],[107,167],[217,167],[81,46],[277,46],[76,168],[274,46],[279,169],[313,170],[316,171],[314,172],[315,173],[301,174],[318,175],[302,176],[303,177],[308,178],[319,179],[329,180],[304,181],[310,182],[309,183],[331,184],[335,185],[334,186],[333,186],[330,187],[311,188]],"exportedModulesMap":[[291,1],[292,2],[295,3],[293,3],[297,3],[300,4],[298,3],[296,3],[294,2],[290,5],[326,6],[325,6],[327,6],[320,6],[328,7],[321,6],[322,6],[323,6],[305,8],[283,8],[285,8],[287,9],[286,8],[281,8],[282,10],[284,8],[280,8],[120,11],[117,12],[121,13],[118,14],[44,15],[50,16],[49,17],[48,17],[47,17],[46,17],[45,17],[124,18],[126,19],[123,20],[125,21],[102,22],[112,23],[131,24],[128,25],[101,25],[127,26],[55,27],[97,28],[136,29],[134,30],[135,31],[56,32],[57,33],[111,34],[110,35],[82,36],[133,37],[138,38],[150,39],[151,40],[152,41],[153,42],[140,43],[141,44],[142,39],[143,44],[149,45],[139,39],[144,39],[145,44],[146,39],[147,44],[148,39],[156,46],[158,47],[159,30],[160,30],[161,30],[163,48],[162,30],[165,49],[166,30],[167,50],[180,51],[168,49],[169,52],[170,49],[171,30],[164,30],[172,30],[173,53],[174,30],[175,49],[176,30],[177,30],[178,54],[179,30],[202,55],[203,56],[199,57],[198,58],[197,59],[196,60],[192,61],[190,62],[200,63],[187,64],[193,56],[184,65],[183,66],[207,67],[210,68],[195,69],[194,70],[188,71],[211,68],[93,72],[209,73],[92,74],[186,75],[185,76],[206,67],[205,77],[204,78],[214,79],[229,80],[223,81],[216,82],[219,83],[218,84],[226,80],[225,80],[224,80],[212,85],[213,86],[222,87],[221,88],[220,89],[191,90],[244,91],[74,92],[245,93],[189,94],[241,95],[242,96],[240,97],[243,98],[239,99],[237,98],[236,100],[235,98],[238,98],[234,90],[233,101],[232,102],[230,103],[231,90],[249,104],[67,105],[63,106],[62,107],[114,108],[60,109],[248,110],[43,111],[41,111],[42,111],[246,111],[69,112],[250,113],[54,114],[59,115],[70,116],[58,117],[109,118],[68,119],[113,108],[208,108],[66,120],[53,121],[115,122],[65,123],[116,124],[95,124],[252,125],[181,126],[255,127],[182,127],[251,128],[201,129],[256,130],[253,131],[254,132],[247,133],[73,134],[72,135],[260,136],[265,137],[270,138],[262,139],[263,140],[269,141],[264,8],[79,142],[266,143],[90,144],[268,145],[89,146],[271,147],[98,148],[94,149],[84,150],[87,151],[88,152],[272,153],[86,154],[257,141],[258,155],[259,156],[130,157],[99,158],[108,159],[83,160],[103,161],[104,162],[64,163],[273,164],[77,165],[276,46],[275,166],[215,46],[129,46],[106,167],[107,167],[217,167],[81,46],[277,46],[76,168],[274,46],[279,169],[313,170],[316,171],[314,172],[315,173],[301,174],[318,175],[302,176],[303,177],[308,178],[319,189],[329,190],[304,191],[310,192],[309,193],[331,194],[330,195],[311,196]],"semanticDiagnosticsPerFile":[37,288,291,292,295,293,297,300,299,298,296,294,289,290,326,324,325,327,320,328,321,322,323,305,283,285,287,286,281,282,284,280,120,117,121,119,118,44,52,51,50,49,48,47,46,45,124,126,122,123,125,102,112,131,128,101,127,38,55,97,137,71,96,136,134,135,56,57,61,111,110,82,132,133,138,150,154,151,152,153,140,141,142,143,149,139,144,145,146,147,148,155,156,158,157,159,160,161,163,162,165,166,167,180,168,169,170,171,164,172,173,174,175,176,177,178,179,202,203,199,198,197,196,192,190,200,187,193,184,183,207,210,195,194,188,211,93,209,92,186,185,206,205,204,214,229,223,228,216,219,218,226,225,224,212,227,213,222,221,220,191,244,74,245,189,241,242,240,243,239,237,236,235,238,234,233,232,230,231,249,67,63,62,114,60,248,40,43,41,42,246,69,250,54,59,70,58,109,68,113,208,66,53,115,65,116,95,252,181,255,182,251,201,256,253,254,247,261,73,72,260,265,270,262,78,263,269,264,79,266,267,90,268,91,89,271,85,98,80,94,84,87,88,272,86,257,258,259,130,99,108,83,103,104,64,273,77,276,275,215,129,106,107,217,81,277,75,76,105,274,279,39,278,313,312,100,316,314,317,315,301,318,36,34,35,7,9,8,2,10,11,12,13,14,15,16,17,3,4,18,22,19,20,21,23,24,25,5,26,27,28,29,6,33,30,31,32,1,302,303,308,306,307,332,319,329,304,310,309,331,335,334,333,330,311]},"version":"5.2.2"}
1
+ {"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/tslib/tslib.d.ts","../../node_modules/@hatiolab/things-scene/things-scene.d.ts","../../node_modules/@types/three/src/constants.d.ts","../../node_modules/@types/three/src/three.legacy.d.ts","../../node_modules/@types/three/src/math/interpolant.d.ts","../../node_modules/@types/three/src/math/interpolants/discreteinterpolant.d.ts","../../node_modules/@types/three/src/math/interpolants/linearinterpolant.d.ts","../../node_modules/@types/three/src/math/interpolants/cubicinterpolant.d.ts","../../node_modules/@types/three/src/animation/keyframetrack.d.ts","../../node_modules/@types/three/src/animation/tracks/vectorkeyframetrack.d.ts","../../node_modules/@types/three/src/animation/tracks/stringkeyframetrack.d.ts","../../node_modules/@types/three/src/animation/tracks/quaternionkeyframetrack.d.ts","../../node_modules/@types/three/src/animation/tracks/numberkeyframetrack.d.ts","../../node_modules/@types/three/src/animation/tracks/colorkeyframetrack.d.ts","../../node_modules/@types/three/src/animation/tracks/booleankeyframetrack.d.ts","../../node_modules/@types/three/src/animation/propertymixer.d.ts","../../node_modules/@types/three/src/animation/propertybinding.d.ts","../../node_modules/@types/three/src/math/vector2.d.ts","../../node_modules/@types/three/src/math/matrix3.d.ts","../../node_modules/@types/three/src/core/bufferattribute.d.ts","../../node_modules/@types/three/src/core/interleavedbuffer.d.ts","../../node_modules/@types/three/src/core/interleavedbufferattribute.d.ts","../../node_modules/@types/three/src/math/quaternion.d.ts","../../node_modules/@types/three/src/math/matrix4.d.ts","../../node_modules/@types/three/src/math/euler.d.ts","../../node_modules/@types/three/src/core/layers.d.ts","../../node_modules/@types/three/src/math/colormanagement.d.ts","../../node_modules/@types/three/src/math/color.d.ts","../../node_modules/@types/three/src/scenes/fog.d.ts","../../node_modules/@types/three/src/math/vector4.d.ts","../../node_modules/@types/three/src/math/triangle.d.ts","../../node_modules/@types/three/src/math/box3.d.ts","../../node_modules/@types/three/src/math/sphere.d.ts","../../node_modules/@types/three/src/math/line3.d.ts","../../node_modules/@types/three/src/math/plane.d.ts","../../node_modules/@types/three/src/core/eventdispatcher.d.ts","../../node_modules/@types/three/src/renderers/shaders/uniformslib.d.ts","../../node_modules/@types/three/src/renderers/shaders/shaderlib.d.ts","../../node_modules/@types/three/src/materials/material.d.ts","../../node_modules/@types/three/src/textures/source.d.ts","../../node_modules/@types/three/src/textures/texture.d.ts","../../node_modules/@types/three/src/scenes/scene.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglcapabilities.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglextensions.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglshader.d.ts","../../node_modules/@types/three/src/textures/depthtexture.d.ts","../../node_modules/@types/three/src/core/rendertarget.d.ts","../../node_modules/@types/three/src/renderers/webglrendertarget.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglstate.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglproperties.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglutils.d.ts","../../node_modules/@types/three/src/renderers/webgl/webgltextures.d.ts","../../node_modules/@types/three/src/renderers/webgl/webgluniforms.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglprogram.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglinfo.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglobjects.d.ts","../../node_modules/@types/three/src/lights/lightshadow.d.ts","../../node_modules/@types/three/src/lights/light.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglshadowmap.d.ts","../../node_modules/@types/three/src/objects/group.d.ts","../../node_modules/@types/three/src/core/glbufferattribute.d.ts","../../node_modules/@types/three/src/core/buffergeometry.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglrenderlists.d.ts","../../node_modules/@types/three/src/renderers/webglmultiplerendertargets.d.ts","../../node_modules/@types/webxr/index.d.ts","../../node_modules/@types/three/src/cameras/perspectivecamera.d.ts","../../node_modules/@types/three/src/cameras/arraycamera.d.ts","../../node_modules/@types/three/src/renderers/webxr/webxrcontroller.d.ts","../../node_modules/@types/three/src/renderers/webxr/webxrmanager.d.ts","../../node_modules/@types/three/src/textures/types.d.ts","../../node_modules/@types/three/src/textures/data3dtexture.d.ts","../../node_modules/@types/three/src/textures/dataarraytexture.d.ts","../../node_modules/@types/three/src/renderers/webglrenderer.d.ts","../../node_modules/@types/three/src/math/ray.d.ts","../../node_modules/@types/three/src/core/raycaster.d.ts","../../node_modules/@types/three/src/core/object3d.d.ts","../../node_modules/@types/three/src/cameras/camera.d.ts","../../node_modules/@types/three/src/math/spherical.d.ts","../../node_modules/@types/three/src/math/cylindrical.d.ts","../../node_modules/@types/three/src/math/vector3.d.ts","../../node_modules/@types/three/src/objects/bone.d.ts","../../node_modules/@types/three/src/animation/animationclip.d.ts","../../node_modules/@types/three/src/animation/animationutils.d.ts","../../node_modules/@types/three/src/animation/animationobjectgroup.d.ts","../../node_modules/@types/three/src/animation/animationaction.d.ts","../../node_modules/@types/three/src/animation/animationmixer.d.ts","../../node_modules/@types/three/src/audio/audiocontext.d.ts","../../node_modules/@types/three/src/audio/audiolistener.d.ts","../../node_modules/@types/three/src/audio/audio.d.ts","../../node_modules/@types/three/src/audio/positionalaudio.d.ts","../../node_modules/@types/three/src/audio/audioanalyser.d.ts","../../node_modules/@types/three/src/cameras/stereocamera.d.ts","../../node_modules/@types/three/src/cameras/orthographiccamera.d.ts","../../node_modules/@types/three/src/textures/cubetexture.d.ts","../../node_modules/@types/three/src/renderers/webglcuberendertarget.d.ts","../../node_modules/@types/three/src/cameras/cubecamera.d.ts","../../node_modules/@types/three/src/core/uniform.d.ts","../../node_modules/@types/three/src/core/uniformsgroup.d.ts","../../node_modules/@types/three/src/core/instancedbuffergeometry.d.ts","../../node_modules/@types/three/src/core/instancedinterleavedbuffer.d.ts","../../node_modules/@types/three/src/core/instancedbufferattribute.d.ts","../../node_modules/@types/three/src/core/clock.d.ts","../../node_modules/@types/three/src/extras/core/curve.d.ts","../../node_modules/@types/three/src/extras/curves/ellipsecurve.d.ts","../../node_modules/@types/three/src/extras/curves/arccurve.d.ts","../../node_modules/@types/three/src/extras/curves/catmullromcurve3.d.ts","../../node_modules/@types/three/src/extras/curves/cubicbeziercurve.d.ts","../../node_modules/@types/three/src/extras/curves/cubicbeziercurve3.d.ts","../../node_modules/@types/three/src/extras/curves/linecurve.d.ts","../../node_modules/@types/three/src/extras/curves/linecurve3.d.ts","../../node_modules/@types/three/src/extras/curves/quadraticbeziercurve.d.ts","../../node_modules/@types/three/src/extras/curves/quadraticbeziercurve3.d.ts","../../node_modules/@types/three/src/extras/curves/splinecurve.d.ts","../../node_modules/@types/three/src/extras/curves/curves.d.ts","../../node_modules/@types/three/src/extras/core/curvepath.d.ts","../../node_modules/@types/three/src/extras/core/path.d.ts","../../node_modules/@types/three/src/extras/core/shape.d.ts","../../node_modules/@types/three/src/extras/core/shapepath.d.ts","../../node_modules/@types/three/src/extras/core/interpolations.d.ts","../../node_modules/@types/three/src/extras/datautils.d.ts","../../node_modules/@types/three/src/extras/imageutils.d.ts","../../node_modules/@types/three/src/extras/shapeutils.d.ts","../../node_modules/@types/three/src/extras/pmremgenerator.d.ts","../../node_modules/@types/three/src/geometries/boxgeometry.d.ts","../../node_modules/@types/three/src/geometries/capsulegeometry.d.ts","../../node_modules/@types/three/src/geometries/circlegeometry.d.ts","../../node_modules/@types/three/src/geometries/cylindergeometry.d.ts","../../node_modules/@types/three/src/geometries/conegeometry.d.ts","../../node_modules/@types/three/src/geometries/polyhedrongeometry.d.ts","../../node_modules/@types/three/src/geometries/dodecahedrongeometry.d.ts","../../node_modules/@types/three/src/geometries/edgesgeometry.d.ts","../../node_modules/@types/three/src/geometries/extrudegeometry.d.ts","../../node_modules/@types/three/src/geometries/icosahedrongeometry.d.ts","../../node_modules/@types/three/src/geometries/lathegeometry.d.ts","../../node_modules/@types/three/src/geometries/octahedrongeometry.d.ts","../../node_modules/@types/three/src/geometries/planegeometry.d.ts","../../node_modules/@types/three/src/geometries/ringgeometry.d.ts","../../node_modules/@types/three/src/geometries/shapegeometry.d.ts","../../node_modules/@types/three/src/geometries/spheregeometry.d.ts","../../node_modules/@types/three/src/geometries/tetrahedrongeometry.d.ts","../../node_modules/@types/three/src/geometries/torusgeometry.d.ts","../../node_modules/@types/three/src/geometries/torusknotgeometry.d.ts","../../node_modules/@types/three/src/geometries/tubegeometry.d.ts","../../node_modules/@types/three/src/geometries/wireframegeometry.d.ts","../../node_modules/@types/three/src/geometries/geometries.d.ts","../../node_modules/@types/three/src/objects/line.d.ts","../../node_modules/@types/three/src/objects/linesegments.d.ts","../../node_modules/@types/three/src/helpers/spotlighthelper.d.ts","../../node_modules/@types/three/src/helpers/skeletonhelper.d.ts","../../node_modules/@types/three/src/lights/pointlightshadow.d.ts","../../node_modules/@types/three/src/lights/pointlight.d.ts","../../node_modules/@types/three/src/helpers/pointlighthelper.d.ts","../../node_modules/@types/three/src/lights/hemispherelight.d.ts","../../node_modules/@types/three/src/materials/meshbasicmaterial.d.ts","../../node_modules/@types/three/src/helpers/hemispherelighthelper.d.ts","../../node_modules/@types/three/src/materials/linebasicmaterial.d.ts","../../node_modules/@types/three/src/helpers/gridhelper.d.ts","../../node_modules/@types/three/src/helpers/polargridhelper.d.ts","../../node_modules/@types/three/src/lights/directionallightshadow.d.ts","../../node_modules/@types/three/src/lights/directionallight.d.ts","../../node_modules/@types/three/src/helpers/directionallighthelper.d.ts","../../node_modules/@types/three/src/helpers/camerahelper.d.ts","../../node_modules/@types/three/src/helpers/boxhelper.d.ts","../../node_modules/@types/three/src/helpers/box3helper.d.ts","../../node_modules/@types/three/src/helpers/planehelper.d.ts","../../node_modules/@types/three/src/objects/mesh.d.ts","../../node_modules/@types/three/src/helpers/arrowhelper.d.ts","../../node_modules/@types/three/src/helpers/axeshelper.d.ts","../../node_modules/@types/three/src/lights/spotlightshadow.d.ts","../../node_modules/@types/three/src/lights/spotlight.d.ts","../../node_modules/@types/three/src/lights/rectarealight.d.ts","../../node_modules/@types/three/src/lights/ambientlight.d.ts","../../node_modules/@types/three/src/math/sphericalharmonics3.d.ts","../../node_modules/@types/three/src/lights/lightprobe.d.ts","../../node_modules/@types/three/src/loaders/loader.d.ts","../../node_modules/@types/three/src/loaders/loadingmanager.d.ts","../../node_modules/@types/three/src/loaders/animationloader.d.ts","../../node_modules/@types/three/src/textures/compressedtexture.d.ts","../../node_modules/@types/three/src/loaders/compressedtextureloader.d.ts","../../node_modules/@types/three/src/textures/datatexture.d.ts","../../node_modules/@types/three/src/loaders/datatextureloader.d.ts","../../node_modules/@types/three/src/loaders/cubetextureloader.d.ts","../../node_modules/@types/three/src/loaders/textureloader.d.ts","../../node_modules/@types/three/src/loaders/objectloader.d.ts","../../node_modules/@types/three/src/loaders/materialloader.d.ts","../../node_modules/@types/three/src/loaders/buffergeometryloader.d.ts","../../node_modules/@types/three/src/loaders/imageloader.d.ts","../../node_modules/@types/three/src/loaders/imagebitmaploader.d.ts","../../node_modules/@types/three/src/loaders/fileloader.d.ts","../../node_modules/@types/three/src/loaders/loaderutils.d.ts","../../node_modules/@types/three/src/loaders/cache.d.ts","../../node_modules/@types/three/src/loaders/audioloader.d.ts","../../node_modules/@types/three/src/materials/shadowmaterial.d.ts","../../node_modules/@types/three/src/materials/spritematerial.d.ts","../../node_modules/@types/three/src/materials/shadermaterial.d.ts","../../node_modules/@types/three/src/materials/rawshadermaterial.d.ts","../../node_modules/@types/three/src/materials/pointsmaterial.d.ts","../../node_modules/@types/three/src/materials/meshstandardmaterial.d.ts","../../node_modules/@types/three/src/materials/meshphysicalmaterial.d.ts","../../node_modules/@types/three/src/materials/meshphongmaterial.d.ts","../../node_modules/@types/three/src/materials/meshtoonmaterial.d.ts","../../node_modules/@types/three/src/materials/meshnormalmaterial.d.ts","../../node_modules/@types/three/src/materials/meshlambertmaterial.d.ts","../../node_modules/@types/three/src/materials/meshdepthmaterial.d.ts","../../node_modules/@types/three/src/materials/meshdistancematerial.d.ts","../../node_modules/@types/three/src/materials/meshmatcapmaterial.d.ts","../../node_modules/@types/three/src/materials/linedashedmaterial.d.ts","../../node_modules/@types/three/src/materials/materials.d.ts","../../node_modules/@types/three/src/math/interpolants/quaternionlinearinterpolant.d.ts","../../node_modules/@types/three/src/objects/sprite.d.ts","../../node_modules/@types/three/src/math/frustum.d.ts","../../node_modules/@types/three/src/math/box2.d.ts","../../node_modules/@types/three/src/math/mathutils.d.ts","../../node_modules/@types/three/src/objects/lod.d.ts","../../node_modules/@types/three/src/objects/instancedmesh.d.ts","../../node_modules/@types/three/src/objects/batchedmesh.d.ts","../../node_modules/@types/three/src/objects/skeleton.d.ts","../../node_modules/@types/three/src/objects/skinnedmesh.d.ts","../../node_modules/@types/three/src/objects/lineloop.d.ts","../../node_modules/@types/three/src/objects/points.d.ts","../../node_modules/@types/three/src/renderers/webgl1renderer.d.ts","../../node_modules/@types/three/src/renderers/webgl3drendertarget.d.ts","../../node_modules/@types/three/src/renderers/webglarrayrendertarget.d.ts","../../node_modules/@types/three/src/renderers/shaders/uniformsutils.d.ts","../../node_modules/@types/three/src/renderers/shaders/shaderchunk.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglbufferrenderer.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglclipping.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglcubeuvmaps.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglattributes.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglgeometries.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglindexedbufferrenderer.d.ts","../../node_modules/@types/three/src/renderers/webgl/webgllights.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglcubemaps.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglbindingstates.d.ts","../../node_modules/@types/three/src/renderers/webgl/webglprograms.d.ts","../../node_modules/@types/three/src/renderers/webgl/webgluniformsgroups.d.ts","../../node_modules/@types/three/src/scenes/fogexp2.d.ts","../../node_modules/@types/three/src/textures/videotexture.d.ts","../../node_modules/@types/three/src/textures/compressedarraytexture.d.ts","../../node_modules/@types/three/src/textures/canvastexture.d.ts","../../node_modules/@types/three/src/textures/framebuffertexture.d.ts","../../node_modules/@types/three/src/utils.d.ts","../../node_modules/@types/three/src/three.d.ts","../../node_modules/@types/three/index.d.ts","../../node_modules/@types/three/examples/jsm/loaders/mtlloader.d.ts","../../node_modules/@types/three/examples/jsm/loaders/objloader.d.ts","../../node_modules/@types/three/examples/jsm/loaders/colladaloader.d.ts","../../node_modules/@types/three/examples/jsm/loaders/stlloader.d.ts","../../node_modules/@types/three/examples/jsm/loaders/dracoloader.d.ts","../../node_modules/@types/three/examples/jsm/renderers/common/backend.d.ts","../../node_modules/@types/three/examples/jsm/renderers/common/info.d.ts","../../node_modules/@types/three/examples/jsm/renderers/common/renderer.d.ts","../../node_modules/@types/three/examples/jsm/renderers/webgpu/webgpurenderer.d.ts","../../node_modules/@types/three/examples/jsm/loaders/ktx2loader.d.ts","../../node_modules/@types/three/examples/jsm/loaders/gltfloader.d.ts","../../node_modules/@lit/reactive-element/css-tag.d.ts","../../node_modules/@lit/reactive-element/reactive-controller.d.ts","../../node_modules/@lit/reactive-element/reactive-element.d.ts","../../node_modules/@lit/reactive-element/decorators/base.d.ts","../../node_modules/@lit/reactive-element/decorators/custom-element.d.ts","../../node_modules/@lit/reactive-element/decorators/property.d.ts","../../node_modules/@lit/reactive-element/decorators/state.d.ts","../../node_modules/@lit/reactive-element/decorators/event-options.d.ts","../../node_modules/@lit/reactive-element/decorators/query.d.ts","../../node_modules/@lit/reactive-element/decorators/query-all.d.ts","../../node_modules/@lit/reactive-element/decorators/query-async.d.ts","../../node_modules/@lit/reactive-element/decorators/query-assigned-nodes.d.ts","../../node_modules/@lit/reactive-element/decorators/query-assigned-elements.d.ts","../../node_modules/lit/decorators.d.ts","../../node_modules/urdf-loader/src/urdfclasses.d.ts","../../node_modules/urdf-loader/src/urdfloader.d.ts","./src/elements/urdf-drag-controls.ts","../../node_modules/@types/three/examples/jsm/controls/orbitcontrols.d.ts","../../node_modules/xacro-parser/src/xacroloader.d.ts","../../node_modules/xacro-parser/src/xacroparser.d.ts","../../node_modules/xacro-parser/src/index.d.ts","./src/elements/urdf-viewer-element.ts","./src/elements/urdf-manipulator-element.ts","./src/urdf-viewer.ts","../../node_modules/@types/trusted-types/lib/index.d.ts","../../node_modules/@types/trusted-types/index.d.ts","../../node_modules/lit-html/directive.d.ts","../../node_modules/lit-html/lit-html.d.ts","../../node_modules/lit-element/lit-element.d.ts","../../node_modules/lit-html/is-server.d.ts","../../node_modules/lit/index.d.ts","./src/elements/drag-n-drop.ts","../../node_modules/@operato/styles/dist/src/headroom-styles.d.ts","../../node_modules/@operato/styles/dist/src/scrollbar-styles.d.ts","../../node_modules/@operato/styles/dist/src/spinner-styles.d.ts","../../node_modules/@operato/styles/dist/src/tooltip-styles.d.ts","../../node_modules/@operato/styles/dist/src/common-button-styles.d.ts","../../node_modules/@operato/styles/dist/src/common-grist-styles.d.ts","../../node_modules/@operato/styles/dist/src/button-container-styles.d.ts","../../node_modules/@operato/styles/dist/src/common-header-styles.d.ts","../../node_modules/@operato/styles/dist/src/index.d.ts","./src/elements/urdf-controller-element.ts","./src/urdf-controller.ts","./src/index.ts","./src/editors/index.ts","./src/templates/urdf-viewer.ts","./src/templates/urdf-controller.ts","./src/templates/index.ts"],"fileInfos":[{"version":"f33e5332b24c3773e930e212cbb8b6867c8ba3ec4492064ea78e55a524d57450","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","26f2f787e82c4222710f3b676b4d83eb5ad0a72fa7b746f03449e7a026ce5073","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7",{"version":"21e41a76098aa7a191028256e52a726baafd45a925ea5cf0222eb430c96c1d83","affectsGlobalScope":true},{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"e0275cd0e42990dc3a16f0b7c8bca3efe87f1c8ad404f80c6db1c7c0b828c59f","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"7a1971efcba559ea9002ada4c4e3c925004fb67a755300d53b5edf9399354900","7a32eb197b39b1829c1e0490e89203a439c1a363991af2475c08b2fc53acf8da","6db87b1c9fdb9a452e6e419fa4d3774c4a2bb410d72b9d983639806cf153eda2","8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881","4ba733d1a5ff0a0779b714468b13c9089f0d877e6fbd0147fac7c3af54c89fe0","95dd223a0a88794a2952026a9646588f35e2c787f61526358eb02f3a437beb7a","03c1ba922efcf544e679109d43545730f85b9fdde57f87dd3afac25cb40cc09b","6cab3eb57ce7f6d601787f36f02c4df40a342263677eef4d4efee9ea890f2685","8c5b8eec5b167729603bd9d418da4520b22012b546e8b77f13ebe747c9da7822","35f9466afe29578b785d467b0614321d0f62e91a827312f64fe24480213772e1","cc07c3f22df47b2e0c3f69f2cc620a3c249f2c23bbf0f60bb806185eee9736e1","4487784a55b64c070ff102d9adc352aed8abc93fc6d5b9e03a0c64784e0b443e","645214ae6e0ce5ae12ebaf7e755d7804d07a6aa7546b4ec580bb3190647420e8","0c953029197fbae6b610304bd681dbdb53499223c50bb6e29bcd4980733367f3","2cf070b64e11f99e16433d1b7c1eff945fba49bf6bc9244e762a8061b4e7d5b2","4c136da3b1dce49c12eac152699c6b4bc64fa93d6c7224a43c816f7e51b00930","bfac6d6a4817bf56d574b1f32b174f655e05ce45c5ddf6d17c9b592660f10935","a47f5ef57d3e2bcb960b1748d24b644eada136e0b2b312758da8db63c1c1d68a","750bb9e7f2e89960f08df8df1a25b10608c276d3e15b9c794d8005f33786aaeb","6ec8e4a4d3c04d18f8fb5c8f70a8842656b174f8ed3e0e99dec7378129a72e9a","e728742746b95356e592ed974e95a1e8dfd45ce16027727b5ee7f43bc7b18bea","f9cf7bbc854fa9b92b98c861c5cd647bcb756b6f71bb2b63627d9bb804662275","316ee93fe28d71f83b722afbcac40bf1c4f946cb6aee2d3add8325a82a9fa404","c680db8c556dbf357fb13062af04b95820047a20ee8134bf7465a8e72fa6d9e6","145827dfe464da4120af0b3b9c3ff34c8817ccc8c4f27c7e6cac940fdf705668","ae046314c0651da4a01e9e48ddf370ce9d22ad21f48962f25a12c1c09de9b01a","afe056716d0c93916d97062ea10e373a3cb987a97e80fb8b7c26902a6380b7f3","a58f386c5f5402f1acc2ade07af0cccf4d7fb56a807c18f42605455b5654426f","26c872d50ea49b0d7fdb18a932e24b07a0065e8965dd57c7946ef4cf01dffbf8","6229806ab8fc0e084a478545a6d1292d0a94c686f0a0765b1074d3cf1ddedee6","d999c1b144a6fa3d6388cc40fa9d903013b06c37ec27944a4d2300949afc9f3c","c47f5b2308fd828b075becac7450f47562e58c6e9042314b24722d8853d4bdc7","f3d39aab18f5660741c7391de511ff24d4c8227825b6703fce2d42b598a8ce80","fdf87d6c8488c846c91b7d09266df7bd37364bc5f93f1de3a7fa0ae876e68ad9","65a2e7f5e1d8c04a7b9374d41c8e9942638e7e295bb5d320afc63579749a4660","89c0b39cc1e9dee0c0233f656fc0aa64d1e8ce9ee0774c4b84286bb626c735d6","fd005aee3ed4c4bdda9000f1fcc5927514af82d9b0a4270e8a12643df5326cad","0a26dfaae0cf59c8c272da720634197818e5ce6122f62749bf26aa6572c6f209","1a8be8ed01e97e677cc4140701a658100210dbd1180730531c66f95e300c0a30","5336e4a16ece0e64032b7fd35cdaf3b0e0024867e931499c7a481e5341b7ddea","64522c73d690165363d11e51480b469fa39cc249ec2cdf84cf55a8fb9403d75d","42dfb629bb4f517747c761a2e47161d97ddba5ce67d3fb39bf17b3a04865df48","da13df0437a5106a726ef1b8885540bceb3388f4c37d6b88b5907d3a7f6d1603","e3989f9bb5218384f10b8f4704b8aa9e52d62ea501f88a8eb37d2731a3f7a7cb","b71e7f69e72d51d44ad171e6e93aedc2c33c339dab5fa2656e7b1ee5ba19b2ad","6c93041a5c92d7ac968adca0e0f9bebda03344a42af7535cf2348366426c6cab","920e19f02a9ce2795c98c5d476d5ac28291daa262a6c0191e2a9410a107cc0dd","30f9328044eb33c6a833bf0d24de91804671a1a6a89a2ea008db7778e2dac64b","7a7e77a1c78d83c198d5eef1f0148ba790f356decf0e249221250fef8e894ea6","281eb8e4ddd65b6733cf1f175dd1af1bb2595bbcea7c12324f028079ba78fdf9","3ec78755b5883ae66f14bde830fae190f250a9558c12c2b4dd5fb3ff8bb457ae","c44fe5799b3a05dc72a9421144495dda99093fda4ec3e0b0098ac1790e5360bb","7c68faa2aeb8af89ae236aa1ecd517822a4a637645c7b19d8a26b5be01c417bb","00ffce682817cfe67b931b790b0a9ef2c9a417a1c60a6d7163989e16a67b762b","9863a668f72971f2836d7584b3389293ad4234b3161c626267e1ee0c4144a56a","0df7497ada3a4f6459420803ecf7e555f1ad1e7bd43c1e17bdafbc34e19d7162","11316a73cd1b67ed78f7bc4136029b4274e4e0d98d4b4442f790c67be7b71674","771ef6d5391893fb823380124a56414e2d19da342932fc0931b8610781f433a4","db658a65560f8728ae202565df2373a9683ccd98eee22ae86acf06631ec2dc6c","c9ff6c188a074f36350d0636bfc637c7e6d773ec24f7af147ca9d8489503e438","6e16ba58508a87f231264a5e01b0859669229a40d6edea4485ac2032ddf8a7c6","0557d22096560b3e24fd660ece9958210350910bc12d5b94739d6058a79a72ca","75915b02632e60a5315df0fc671435c0cedb830916ff25acbfb93d646e553f37","56c79f2aa23bed9541951354447ed77cf9c010b8f5815b9835b3563fe58bbb74",{"version":"20e63d6e4ad7632c2f466bafc23b2af7fe3c5a4eebe7af09b2da2bcec3feed6c","affectsGlobalScope":true},"237622915050e6a2c44651433a31892e4d177a1ce90fd79fdfd71e2bd3d93b22","75e7593176d42566e9270f56204e9703d3554822b283c3a9292e74d883224e85","4b2891882de1de6d740da442154b5946b1bf87e87b7f0e9eb2e17143602f3cf8","2ee9da57ee1ce2e3b198184b30149d2be321148a8d7c37258adf28dd9a8040f9","a0a11708cfdff7d18b61419b9468187366f9434f2362dbd479d33b3ff25a25db","47a15d6ef220ecc171a1984292194383e2d30aae2632b65512193af33bd3ab54","4f6a33630204c7021fc23d1a594ee87875b00d09223919015ee65c0051181d0e","61178956f54ea72d5dbcba0cdead85244cd47543fce545628815b1f0dae8fe6c","d3405ffa6aef8041ba77c7678f91e9bf59787f5332556b2d4af13c67bab73d89","640a969e6c00f8614b558b6d0ff56b7232b9bbfec2be654855ab4c5c0b1e6924","d813f0d97e1f22d965bf8c32e322d837632fd2c55322ff4778d8a87203e576ed","614a0e21cf6911adb5424bd3918d9ab851c3cfbab8b9a237939f66b8b98e5dbc","f8fc18cbb63aaaf5738150729d25fd042b0a8c378a77474b935858b5fa1f37e9","9281578561706347a274a0ee32665735a672c9df0cf73fc21b980b227853c679","1271d2dae4d4bfe0685a9fba10b17babe7eab844e24360dc2f7e9a5ca9ae3cb3","1da8d74f8d0e2519fe06806a9760adcedd502b136c30c5d3dd21d86f001136f9","8005f014d194bc7ecef5b46173380a40a0217f2819a5c5163025b64ba713e7d5","d8ea5111e2ada2ac132236226ec84da5a4ace234569128fcaafd249903cd7df7","0e6b3c7f300f6e2587c62783ebf78c74e61e7e85d37591e1e1ecf82cc15adc01","750e649255c82a42e00089ef40d74aa0f8b452f9e850b96d4afb106066163d29","f0ddf6176178e0260a022ed5c94737be62eb3e7348f14cbee523e1adccb977f2","b90f14bca14cdbdd60dc83c451aca97e8df63c8eb8a158a9ed84de4bfb4cad76","81ff1a061dd70ce5c98f018bd793a7b8642b9d48aade020fa2b7545c57ca23f0","c855ea57afa7047017f0a106a7965eb1ce68368892e987e7a476cf55f3587305","8b34c6543a03d190137fe48fba44d0ba3ee465f58c857b031728030cdcc9a15a","6f7214bea2c7d1b77c00f1c1ebe05c1b30a2c8ab22b2daaeb4eff309797351b0","64d72aa294c19d78df3fff411141970f6880af4b8f4b5b2b6e2b2a609453f5f7","2dc6230dfec1968a119d46db782bf792554bb2ccbce04858ef29bda03bbb9a32","31f638b6883bf3b0a62e9a8ab8772ed1992b495ff97b9d3f39b863d3048aa53d","53ee267abbba7bad82e6d7d7d09193920022833dcb781caae774d5fff485ad02","7004365dc35907cbdd6659395eb7ab547fe4c4d80bd680266a0c944c281f2ed0","c91b058ab74323c57dda1cbda7eb8cee56272002249a642deebbbd977c4a0baa","2e72816e22d29b7085592d2423b27171c3e83642eb923abb3b3a1572b2ac00a8","845090e45db658c181c8800203a6e976b2ad24dc425f8cc79d69674cab8b1bfa","e2b4b04acb9b64d3e9795c0987970e2868def21dc3f4eaf5b9b1ba656329fd90","761374b32869f1ea51bf3498de89c3239238efa340b66f5806ba86493e4724db","6c7f1a4f3d43a47624bdf26e93be7be9fe29cda02de5b53b83f5c7559ae07745","66f3397c79bffd25c962211a9fd0d1b4f4f1eee2d8b45ecb68d38739b35f9deb","4404bdba5b068defcab5fa47e232e63b628462d97f2bdaa202affd7636db6db7","b7280b4765bbfaa74b0fdf776f0b9e1178c48aeb388fd9bd87cca27b0697d745","36c690a168ab4ed54c698b1f8b7ac7736588770472fb61e0f431ab26a2f19b1c","d413d2e2512cc4a761f0abdabeba1fc232f27298699b4ae5130eec686c9799a9","79da766bac75d90a82ea980165bb4940d96b0474f593aa152dc9b24b25076c29","110aa32f359361a26cc6834d04e7e30e5b4d089819d3ff6be9e4db5dedb48f02","ab15f9544cb4336b8c2867f5889428f9405c2d552ebc4009149302da010a8629","40288c03a45907f615c4f90455d3b7d9aebcacab6e7526406dae278745966ca1","f58b9402e358388815e1cb74e051f3010d6cda86e33db9c0586cd0f7d964c4be","fdc4987ce19c9be375a1fd7f34ba3e608ac13eb9dbd5cbcbfcbf5b1ee9c979b8","f96d2f63924a3958a624de632af6721a1f9054770a7d21b59946b551f75e485b","5fe2eee7cdb2f9056f8fc1dd23a2b3611f2c40ef1fe5cd4d74e12bb8fde701c8","134a5ec9afeaa7463ef81747779befa2b489bb01f8c3fa48401d82fc80072811","803ade4091a058e5cc7103209c6f18a71215e6c7261642fd1335dfc7993bae2b","267a21e0919b3833b4e6bd6dff73622e881c403a01473ceb22d70a97d9302774","a28f24327da93c2de0c0497e68fd2bb0a861056444151f73b8ececab20c0c078","4a71560ab2a642402c9d2c8714f7b189a1bb86f6d29b0e99327ac207b33bf14d","27aeb513135f10c0fdef4d3efb644b2cca7f680041a61ad2303df95594f41bcc","7fdfe7876d7c32130fef2c5b4fb85ce7d9efd876278f534c001ff7a2f54835bc","10414f6188dbeec746561f61feb703841488c5a510367e5a7a362ff42db5b523","631777027b2b207a98d64309b268cf0c8d8a04960711549fe9b7cb4ae43853e4","46de8913cfd012c11dd43e8b5b679217d488889cd7042bc5cf9bf61afb3b664e","bfcfce0c5192fbeb884e2c54c1504a480377209b4fcb0e92a2b8514f8991ae74","ef9bd226f7784ba266eda5a3c1eaf97ff90143cf761bdb463e8472bbdc6b36c2","0e9716057f5eb64b608a034a56090d9caef600b562283817d824b1c7e0cf8552","10f6413cb6cadc97f8f8e469af0a9ed20ff17f01cea45ace087f10bba65b7fcb","af76923e0e2b2a95b8a4da1c910284ab566d97c16af24281cfccd19750132d67","2a022487334490ef69ff07c6bb89c3d4f70193cc6f94622f57d6f0ffc0c6d298","fed15022b1885b1c71fc23aff317d6e8184567fba507ec7a4a86c6d82895c92a","4c8ce383c351cbd54a8e5ff44c893a43d8c8c68d1cef61167cd5095625cff7c4","47b93fc905367b704492563052bfad889ed81316e194daa4aff345ebbe5d03ed","c0bea3a09fded8316db355b690c5b698e4916f1cd1666a8d36cafbf73a2bba01","b72198a6c8cd987191d5731879f07bd55fb4143aee5799a185226132df36660f","5b92a6ba5b7c4642c78758404f4f30f365a9aee87ef37dff2a26d3bc6cfd36f0","2449e78948a7046beb7c475df7cf738d77ca5f39a517709fb59a0954ea9fb8ec","71e637e017b631b79ec38a849b11ed3da30ac2a44f1d5bc839fa0983eb4fbbcc","067d9f3ac5b6e0f45c10307a43864cc269a8f40268d4f320fca78839e0c29d41","19a0b8c3848dc7b658d8e01339b7379167d093e09639fb78c9d9de520083658c","0feb35ac96c7fd4f05fd030e068f3221722272fc5aca38bb7d1c68b2d8509fa1","a4314c20ddb18345da6b0a61ce1c9adc999686c38addb6f07753f8b5af119a25","2254b6c7f5cf1a7aa64840abb8e3eaafa34165f8e5b0dc26ae239106fa374f44","e89a1b90600c34f039283f98174d026f4b1f8e10ee1be8405f2fb3e6b0a64a5c","4b8487e012575838f3a67edc57cef41acf63d777e63e7885929d728a26de9f50","45256a27c84341974a86225f2ed16dea4e81d37aeb640d29cdd0747b9b5643df","bd25dd1ba7d30b9a7c85194f4dbac7713c25b4911142e2f884d60b8da4dc908f","4f74431163bb615446d54dd570cd4e32054c8f56c7861db8713d58a2c0d23128","a40607f2dbc6be9d1672400359fe2586e5fc29fffce25fa29be61d5d80694992","a4f0cb9300217ca7d082d41b1d8c35a7c31af310533bf1ac119b824ec1da4ea0","d2a7473d04dfde406231220b3bd6721985efcd1233389c355f9f2c4e7a977795","6bc8106b89599b3bfcb1bfb22d2994954d3f483e4fa81f45afddf79cf5908db3","bccb0c01165759d4a5a96759052a362ed223055369ebebdf337733e2ce9526f5","48657e2843326cf684f3070ed2f0cce336b1b722e62a247f0c6f99277413d039","70cdeaa2857c52145a492a3c1a3963651548b1ae64dc40b6447ecaf906a48df2","46b05e85c03626fad1701da84183faf7bf324eaf0f3a05b935ce659734bdaa57","0f0f4284d59f61163d4a57a2fabeb00d18d67949492902a4daa6e2703f664800","ecf1e2e280ee3a8e845bb6c16d5d025888f21a523e568646250ccbc0478b1d89","7047966dd76834bb58b7a6bf69de3e481ddb213fd46fb658d69c469f490c424b","2b0c04aa6761dbf192753f7e48f786087064060b958748fc1ff8d5c686bed21c","3ceff249cf4acd81c7e972564db84b1eeaf5eba8e9bcf80afdc6e918c701deb0","bb65dca260eae1d22b0aa826fcdadf22bdc0e2d1c6ca04093c928304c10b6c0c","eea6ac5b3ae308043c77cdf2da441109295599326d59dcd4b395b4e0f1faffbc","7da134e2e990f2a5655ef24fd8fbf0472f701393983ece413ec4b774868986e6","5b6be993bcfb6805cd42de3b38a7f79ab48ca16799ef16c37396c842b8ac9908","a38ae7e1134b4245d5a1ae365f886940bcbd32e08f2dc482c499dacc1cc55558","5813a8d62a7a44cd6d43b20b69c6bfe7d14a09b8b829d550d0e2715b1d2b5a98","255fc911f4b37529b69027f18c28e25cd6c81e2ccd8fb1b60bf31e63e74f947f","0c3e626ff2b0c9dda02fea03a1b4a836f36ea70e35e91b3501dd722e99359e62","c65cecf1661dfd9e694332d5396f3319e10b1e3d7751e71fd3bcb307400a9ff2","29db2fa03e23add586cac825068e8e22b3439fc66b71ffc8537d2a48cc7643bd","db1d65581c58042d0a16403b54daf21592525721c68095117db78d0fe25713ef","c20340f19d3aaa555eb6d739b1aa65a157113cd0dc2448cab1ef135348898bc5","150cde4daaf12485fe47145b35bfd1a78f1e37d03386d567a025cb64a3e2b3ae","3785f670c9caa13856e9c0c4acbb92bf2c5a3548dd0989ca59bbea38d699d8e0","083d164da904fead4683724395e836eb715a84c87ca5c062f81a5f4c702ba9cc","95f46d2a3bae3688654fa940e37dd2dd618fe06ca889527002909db57baace3f","9dedb590d54490977c29b7f9d687321bd1595c1d48a71b9bfdc87367f42449a1","038fc92ca9f7ccc61dbfd53ad6887ccd032b11889f4d47b6ee44a86f57c462d4","c7926545fef5f08d9edd838374f598b9ed3d3da19f9fe65b5ad7950750e70cdc","21e9aacae646c52d7addbf1314d97290041f70e09558621f75aa9678188f8662","c427dd3883fd7424aeb96ce55dd60221a710de01ce87dea27d6c01779c7a44f0","4c247efd4d3ace18b8397b9764274c641379fd6ec2f1626be86d101275103010","e9978c16ad9bab6956c253a745b66d05d5325b6e170dc993ea2a9d32a5255b0a","a8a3236e70985110a8e73f6222709417951a5393b85048ebcd9504fcde47e8ee","13883804d586e6cb65156fba20c32a2195627d6778ae7e91489556ad29ae448c","54781664247ca4ca3efb0d1b853b2bfbacf6a67ceb895ea8736b28a066b2e5fc","129675f9fff4828ca741e1d105432c92866d300f1004421416a000be5f32df87","fe605c9e09b87c3032c78e3728f1b06f3402c3377dadde55aa2a31b325c5a977","57f2d9377264cf90b169ba4bbbcee8135d1350d8523d60a41d5523cf8456f226","68c0e549b338687c32d4cf350fb8bb0c7ae3e62a1218b8d7cdc7a2ed81233f99","5f32f20afdd8bb91a2089d8172657b1a0ee66e9a5adaf74c40b28a282a379d97","ebcfba27d4116ece1323158da1bb15b0328fc98593c89bfce27424d46eb1c993","2812fdc0a0d0e919c332fd61b505970e29d04c7b6145cdfb1f9e3a83a6f015d4","017699530c6931f88ad49ad9212a5dea86548ad4a699924d0d288eb299d39ac7","dfcd7798d384c64444086b59ce001085a8684881c542946a996d9fc1c2bb4b1e","11c2dbd61522018c773d90fa43717ddb133c9810d0d1c8056450ef90f975f433","179c0efea25a2dc7ba279deb12f37da27ee4b9a138fdae9ebb331caf2d2cc262","5c8a08215774dfbb0cf15fc652cf3ad07269a8d0d6d4d8c34a9b5a574de9feeb","2241565e172c30c4cf66676c9aa15787d833d6184cfe7081364908a7a5ba54a1","46f15916bcf4bf16a50d5d73d0e963528129a28eaa56ca711e3d5b607dc292f4","2710c44f7020e72380c654e10dc96166b4de7cb714b275abaf6e846bd3f92213","bbdd280d432453be693ef9d5203d85933703ddab3128839896765be8b9b7df0b","958afc77112e040b7afa3b1e494060294909d5c503fa766d35faf40aea3854be","8d0083aa4d46124f0f209f2a4f54c52b6fb30488e3cfe1bc89aadbd1ddc461af","e368a7470fd37f3e5967e5605b41bb1070f5b22486973e4646f6055fda0d253b","5547a7d3437f2399ecd17b6f8fca3a9a0c5ed11b1a8c3514830f755635649c25","05b1cadd6cf67a25eee4336e22403900e3813b21cb87bac30b2c89c5a75d7000","48529c5f745a6401273f35a03f1c8dfa51ffdb3a07b028a29bd86aed6b5030de","e3141bdf0702e7fc3cfbf087bccfcedf060a369c069f92368e190086de872947","b5e58c430984c7948541bc7a3c48d773a9b270945a57a9829bd035ad8793f877","2199bcd1ff2d7873e0d4a3a24aaa12027aac96ca76e0adddd298f267bf1a23d6","ff23babf6e9a98cc687e134f583171e68cec4df7216797a91f93af6f74f363f0","9aa07f8d56bc4a2e10ec2110a480533cb5b892884829fec43f895c3d50f8f5a5","a2ce6915f04b2b983d7bff4a6e41bd1ffa31f90099df1d3283868a42069d0fae","d11fa708351ac80022c1f5281b74f5460b1242a531f4b521f2c1704dc88bb236","3bef3a8785fa09b981a2c5c310162a8dda7a4b5f7b378c7ec6f0ea6ca1128d2f","508676634a21d4797a88ed569ea428edd4a9a4b1d5cbf9bff25ecdb4ed6fb623","2696ee6e683dacb9698dad8c6870f9f7bec5be4564378dc4b8f3dcd185a12e88","7f36e7aadb2947402b427e565916c7c6abfde7626b40f15c9d9eba8e539fd33e","c6f74da84232200cdc6f6463f6bde44f443c432c324155b986d930cc45f6147e","0ac1a778d040064d45be56b1bfc3f8bbba51aec30e70ed990ca5a50003a12691","861814c035d92c965c74e48e7220366d38905f7790ea7eb3f353466ddd0d67bd","bb5af9044874d429a2172cb5b484325c8d7c8ea7b2e9193646f6e620d5744406","4d12ee90301f26969513d863e2f5595d9f5d9835b2425bd901fded7692b002af","5d5494bbff518367d23fc11dd251d6a3204215cf22c726be436c473775ab86d5","ee60f5074ac49395b378605abab5295097006d76ad3247ba0f8ae1d40b7eeefd","f2b12a9544e5dca4fc3bfbbb869ac995ea32074319992a98b7d8643acf5c5299","9b45fbf5e5ba1af4506ab5af042fae9a654c2e11ba59fe1fb90daba38a9fb61f","3629611a65f92f1d994c22e62bbbbca59391816b2bf0df8d54a04399d77d5d54","6d36ff8a19eb4e332534b21a7bfd07689d472b7df0a03e569f84dc98df459c09","fbaf22ba88529401e0cda81f823713e0f9b74dc108e9b787430df32ec901b830","4955d58601bf682de56f31eb8b9172b317e07cb02eca47ab801eb96eace9ded3","e530f7aed1540de0de6ad42face93a935198b54a621db202bfbcb3d0bfdcbfe2","1e9be9b5404530d965fca7d4ced40bc2604dd9b076f1ed360e1e5575607e07e4","b131871af325bb0d1308b51586591b48bdeac501131fa86781ba5dae7fe52163","9aa87301869fd4200a82a7870b5915cf803201553fe81912aed93f2969a615c7","835b1bb126d1e0562e2c54dfb86bbf8a9981e360bfd5d03162f1bc97659411b1","34916b0468aa34e0ea7b92ba0aa8626d4788720980c8a992c7bbc3b29c75ad66","5dde989aaef166fab046154d46d615ec1701e0900087f1db934ccb886fcb88e3","3511a82a6b64f052dc3ed0719cc7c0f2049b2f90ba680b29862b01631c8234de","4d33f22b3f964c0364171317f451e3e9da635cf213d83b16b64cfe2c41bcecfd","5119874b0d0a08c08a03054615e5e6bdb9dc2e48fe7b66aca8b540ad0381ac9f","8ac69e19ba687c785bcf92a060bed497ef072907b3103bc33203557b953768d2","71fe82fed18516114197469a5e2c24d73f52a1ed8f263c0568401ac508fdd50f","b8903e62640677eca4414b1ddfc439bdc9d33a44cb162a8fea4583f763fea13c","56a5838286bc1b08b307ed444d5138d3164214704ff881bda510aad94fa231de","3a36ca9ed835efa6fe2ba8a44732b93e0b15e7f2b7a5d02d02cf5723c82b79f5","70de0224d861c48dda92e2bf4abc45509af3974dda5241a476810355fa63f94e","5eb36c92c02510906bc0bf063617d63c0b0d86bfb035085a5bd74f0cfa9a4393","f9ee8a5eb97a20f7a9880b483f0e52315c35a58bf5d6fbee6660c509ec5f83e6","300c308f802b79745f566b3d2ec00419ba58b85f6a43b82f624cd77d583a1ee9","70ab490a7f1f89cc713996516d2f52aa3fea17a67399fa89538c8c890344ff9f","92f1c883bc5e1d70843945a7c5bb1feaf0841f162accf62a3f2d40694eef42aa","e59262ddaae67dec2d226f8a5d05cf6c4dc353c0d9b1e4980a61d7fcf9a2b051","5e30131b6a5587fe666926ad1d9807e733c0a597ed12d682669fcaa331aea576","470b8c2386c916bad4aa0d05e89b271a47dbe1250cb25dc0f93102b457228dde","2a8f0a19a927e83421597c056c90695557142f54ca96358f01eb1f2a5eb228be","d08415b3d6d7fd153ba6e7bf7707ffc57f3c6ad85730ea63544756610b4350c6","411f23da7a63c3d3fd4860c41a458e8df239776fd5d9cd36dd3ad6be92afccbd","6ada3e065916c0ef2dbc9bc0f9b5d59afb25d9176f81fa2c8993a536924140c6","356cc1b058e05e07d2acd73bfa87f83a6f4a343450ee375dad232ff4a55d41d8","df286e6b181ed08766bc19cf1a2fddc50bc5d540f233bc1ce4430a3c1c8c8379","f436800c0af503703110c93144fcc7392524636fb4216296411243b29fe0162d","0d5002560b45ce4fd6c4124632f61789e584be0634602486a2ce59541311d153","bbe13c947d7d6c3426e0e5815e2b3464fa03d34a4bf47298c43b9237cf59555b","9f7d0ee33b9f8fa4dc2e9628e0cdf8683104d01de9d3d24f62cd5da014a5bec4","a8992b852521a66f63e0cedc6e1f054b28f972232b6fa5ca59771db6a1c8bbea","d5000b2e168a9c163611de83098009dc5a56ff5b763de242e8cb3f591a3530a8","bea3bf1b189bb8bb83955d083b62ccdcb836f5b06d51b55aaf52b4b4b35642d2",{"version":"59b58fb30a47cea4cce02d6807322c691f559e554f74dd61507f3f1b9e772e2d","signature":"ff25d7495644b3014e95139925f0d42a8172edc645b1755fbfda15f42ee29456"},"f4d357fb89e1e67552950c7dff4f3f47c575d5f6add11e2132365dc7e6fd87fd","d06cc651811bd5cdfe9c1b00566c87b70a19b17273dd27407d973ca8a59ccd21","aa7b2ca01b1c60eb9db32fe744424c18930fea62218765d28df72bc51436f8b3","ba87efc6df1dfc44d7e22de74c3ac178433fb665f208b9304e9e70db53aa2b0c",{"version":"2326e64a75102b4097661a7c48ca3a0c8599cf149cb9447b5f720815f6dfc96b","signature":"68a8e2f507d5df6ae1b2d02234cd0be7d669315fbd86d38ac4a0a04a5a9c40d2"},{"version":"607f181f823f98b6bb3b6235c1d807ff48694004bb9b3ee5911a6e4addb691a3","signature":"aa65bef561f615b6474a1931ab47f0022a228b9874cdac633f993eaf730159fd"},{"version":"924ef72e854bdf9ab567a9afca14b6f9ffcdb134c1985b9299c3c28184685c7c","signature":"7c1a4bffaa3ea16c053f2df968e56cd6fd104826ec9ec5efbbb38f42494fad5a"},"15fe687c59d62741b4494d5e623d497d55eb38966ecf5bea7f36e48fc3fbe15e",{"version":"2c3b8be03577c98530ef9cb1a76e2c812636a871f367e9edf4c5f3ce702b77f8","affectsGlobalScope":true},"7000ec8572390d035ba5ef993953957150d0c38ffb31b56653c97dd78cb6e1aa","056892cca68dca10a914f1580ba0e5710d26794e8707225dca9b5717ed702f1e","4ddf3962990379d1ea59b369a5516c7533b7944010d6998e0e9b1ab35d5af1f0","1bcd560deed90a43c51b08aa18f7f55229f2e30974ab5ed1b7bb5721be379013","dc08fe04e50bc24d1baded4f33e942222bbdd5d77d6341a93cfe6e4e4586a3be",{"version":"223c771d15e3023074ddf664cbce03e9691aee29d337d3b7815403ebc371e929","signature":"e474c323c111799257e2e230d6cf7495951f409154a207dba8a6b80dacb6762b"},"cf93fb9208a01c80f0fad245c4360356e5de6c2384b7641acf0b9cc2f5c42448","336398b0efaf964124e636a9b29c4edd5870aee79ac64bf87be58a9d66b7c048","571bc65ec37ba124e762bb822e14a2b8502dc684e356be8feaccbd6b9cadd023","2bbbefc1235500bdb5091f240dc8cba861a95342272f7d11b7574a0d2ef4f85e","7cd455fc4c4818f19263d73b29c59f3fb5fd54b45a6ab83ca3eb3661281db56b","1c6b9b5501774a2ece6574be8e26092800e3f1f836f8c179b4f9fdd271a620f8","bcd2426fd141157e04e3a8eff914b575403587f398cf0878f07c2f283e0d1afd","bac8ff394e831e4dd3f0961d6abb414b0e2b4ba16fdeb502d087ebf0340ed5f6","b8965484c1a08eeac238cf02a1498d72f3f3610059570a2c0fd207eb34245146",{"version":"1fa0a16b7937e7598b4019358746a800adb6aeb99538412f64c83cf855b25bdb","signature":"640e1b327a3bbb904072cc136bc1428c7de3db7f9fa089bb7a70a80891879ae4"},{"version":"cf0e96cbcd290524ed92da2ecd597ecfeb0d3fc36f5d9cd0d1024ba1b377f556","signature":"0406442150c83ee79672f59e304b579f3b31c1a0fbfb8a36db58e91df77e7fb5"},{"version":"45dfee0786a308f5f61aa2f2c00df23b8b35ad3e7ffbeb885a804a43f6dfd41e","signature":"e6bea57d564c188e8b1c8e21adc0503329db3d6975644550e4590daed7c8e44c"},"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",{"version":"b820387f00e638331d28743f1e0f9b9cf415e41360522b3176c0ba4529a85970","signature":"8f017a2a1956f37846a0ad1a2fd4892474a057b3163cf9181478e03e2c646968"},{"version":"9435369b5b612a97f51e1b4eb5ac3fe26118dc14ec75127051a395409ee87e2e","signature":"8f017a2a1956f37846a0ad1a2fd4892474a057b3163cf9181478e03e2c646968"},{"version":"6dfc37059dd0fe6a2f4f5f1fc2250cea676b214e6eca6b7f1f5dee8539eb308d","signature":"e4ca4d8a87d3c81f481decf9000b72ba30371c8088de609814b2f0be74314bb2"}],"root":[307,[312,314],322,[332,338]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"esModuleInterop":false,"experimentalDecorators":true,"importHelpers":true,"inlineSources":true,"module":99,"noEmitOnError":true,"outDir":"./dist","rootDir":"./src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":5},"fileIdsList":[[293],[294],[293,294],[293,294,302],[291,292],[321],[323,324,325,326,327,328,329,330],[278],[278,284,289],[278,288],[278,280],[278,287],[278,285,286],[287],[38,111,117,121],[38,44,115,116],[38,71,111,117,119,120],[117],[38,40,41,42,43],[44],[38,44],[111,122,123],[124],[111,122],[123,124],[101],[38,59,61,111,115],[38,108,111,130],[112],[101,112],[38,54,59],[53,55,57,58,59,67,68,71,96,115],[55],[97],[55,56],[38,55,57],[54,55,56,59],[54,58,59,60,61,71,74,77,95,97,108,110,112,115,117],[53,61,109,111,112,115],[38,65,71,76,81],[38,71,132],[53,115],[53,138],[53,150],[53,151],[53,63,151,152],[139],[115,138],[139,140,141,142,143,144,145,146,147,148],[38,76],[76,77,83,108,129],[162],[164],[53,97,115,138,152],[159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179],[53,97],[97,152],[97,115,138],[63,111,115,181,201],[63,182],[63,67,182],[63,97,111,182,191],[59,63,112,182],[59,63,111,181,195],[63,97,182,191],[59,63,111,188,189],[70,182],[59,63,111,186],[59,111,116,182,278],[59,63,93,111,182],[63,93],[63,93,111,115,194],[92,128],[63,93,115],[63,92,111],[93,208],[53,59,65,83,93,112,278],[63,93,185],[92,93,101],[63,76,93,111,115,204],[92,101],[117,210,211],[210,211],[97,134,210,211],[210,211,213],[129,210,211],[210,211,215],[211],[210],[74,76,210,211],[74,75,76,97,111,117,134,210,211],[76,210,211],[63,74,76],[191],[38,63,70,71,73,108],[74,189,191,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242],[38,63,74,76],[38,74,76],[74,76,115],[38,63,74,76,278],[38,53,63,74,76],[38,53,74,76],[53,63,76,233],[230],[38,72,74,133],[63,74],[53],[55,59,66,68,70,111,115],[38,54,55,57,62,115],[38,63],[115],[58,59,115],[38,59,67,68,70,111,115,245],[40],[59,115],[58],[53,59,115],[38,54,58,60,115],[54,59,67,68,69,115],[55,57,59,60,115],[59,67,68,70,115],[59,67,70,115],[53,55,57,65,67,70,115],[54,55],[53,54,55,57,58,59,60,63,112,113,114],[53,55,58,59],[59,67,68,74,97,112,201],[111],[59,63,67,68,74,97,111,136,201],[74,97,111],[74,97,181],[111,112],[74,97,111,115],[55,57,74,96,97,111],[59,116,215],[38,59,67,68,74,97,115,201,252],[53,97,111,243],[72],[53,54,63],[133],[55,57,78,96],[55,74,78,79,89,97,111,264],[78,79,90],[70,74,85,112],[108],[78],[55,90,97,111,264],[89],[78,79],[80,88,108],[74,77,78,79,89,108,262,268,269],[74,77,85,89,95,97,111,112],[38,77,78,91,93,108,112],[38,65,74,78,79,83],[78,79,84,85,86,90],[87,89],[78,84,89,90,133],[38],[83,106],[83,107],[76,83,108,129],[76,83],[38,53,63,65,67,70,74,76,77,78,79,83,84,85,89,90,94,97,98,99,104,106,107,111,112,115],[76,82],[95,111,115],[65,71,100,101,102,103],[63],[63,64],[63,64,74,76,111,278],[38,213],[38,76,105],[38,53,54,71,75],[38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,101,102,103,104,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,149,150,151,152,153,154,155,156,157,158,180,181,182,183,184,185,186,187,188,190,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,265,266,267,270,271,272,273,274,275,276,277],[315],[293,318],[318],[316,317],[295,296,297,298,299,300,301,302,303],[293,318,319,320],[279],[279,305],[309,310],[36,312],[36,279,304,306,313,321,322,331],[36,279,306],[36,279,304,306,307,312],[36,279,306,308,311],[36,314,333],[36,336,337],[36],[36,37,313,314,332],[36,37,279,281,282,283,290,313],[312],[306,313,318,321],[279,306],[279,307,312],[279,306,308],[314,333],[37,314,332],[37,313]],"referencedMap":[[294,1],[295,2],[298,3],[296,3],[300,3],[303,4],[301,3],[299,3],[297,2],[293,5],[329,6],[328,6],[330,6],[323,6],[331,7],[324,6],[325,6],[326,6],[308,8],[282,8],[284,8],[290,9],[289,10],[280,8],[281,11],[283,8],[285,12],[286,8],[287,13],[288,14],[279,8],[120,15],[117,16],[121,17],[118,18],[44,19],[50,20],[49,21],[48,21],[47,21],[46,21],[45,21],[124,22],[126,23],[123,24],[125,25],[102,26],[112,27],[131,28],[128,29],[101,29],[127,30],[55,31],[97,32],[136,33],[134,34],[135,35],[56,36],[57,37],[111,38],[110,39],[82,40],[133,41],[138,42],[150,43],[151,44],[152,45],[153,46],[140,47],[141,48],[142,43],[143,48],[149,49],[139,43],[144,43],[145,48],[146,43],[147,48],[148,43],[156,50],[158,51],[159,34],[160,34],[161,34],[163,52],[162,34],[165,53],[166,34],[167,54],[180,55],[168,53],[169,56],[170,53],[171,34],[164,34],[172,34],[173,57],[174,34],[175,53],[176,34],[177,34],[178,58],[179,34],[202,59],[203,60],[199,61],[198,62],[197,63],[196,64],[192,65],[190,66],[200,67],[187,68],[193,60],[184,69],[183,70],[207,71],[195,72],[194,73],[188,74],[93,75],[209,76],[92,77],[186,78],[185,79],[206,71],[205,80],[204,81],[212,82],[227,83],[221,84],[214,85],[217,86],[216,87],[224,83],[223,83],[222,83],[210,88],[211,89],[220,90],[219,91],[218,92],[191,93],[242,94],[74,95],[243,96],[189,97],[239,98],[240,99],[238,100],[241,101],[237,102],[235,101],[234,103],[233,101],[236,101],[232,93],[231,104],[230,105],[228,106],[229,93],[247,107],[67,108],[63,109],[62,110],[114,111],[60,112],[246,113],[43,114],[41,114],[42,114],[244,114],[69,115],[248,116],[54,117],[59,118],[70,119],[58,120],[109,121],[68,122],[113,111],[208,111],[66,123],[53,124],[115,125],[65,126],[251,127],[116,128],[95,128],[250,129],[181,130],[254,131],[182,131],[249,132],[201,133],[255,134],[252,135],[253,136],[245,137],[73,138],[72,139],[259,140],[264,141],[269,142],[261,143],[262,144],[268,145],[263,8],[79,146],[265,147],[90,148],[267,149],[89,150],[270,151],[98,152],[94,153],[84,154],[87,155],[88,156],[271,157],[86,158],[256,145],[257,159],[258,160],[130,161],[99,162],[108,163],[83,164],[103,165],[104,166],[64,167],[272,168],[77,169],[275,50],[274,170],[213,50],[129,50],[106,171],[107,171],[215,171],[81,50],[276,50],[76,172],[273,50],[278,173],[316,174],[319,175],[317,176],[318,177],[304,178],[321,179],[305,180],[306,181],[311,182],[322,183],[332,184],[307,185],[313,186],[312,187],[334,188],[338,189],[337,190],[336,190],[333,191],[314,192]],"exportedModulesMap":[[294,1],[295,2],[298,3],[296,3],[300,3],[303,4],[301,3],[299,3],[297,2],[293,5],[329,6],[328,6],[330,6],[323,6],[331,7],[324,6],[325,6],[326,6],[308,8],[282,8],[284,8],[290,9],[289,10],[280,8],[281,11],[283,8],[285,12],[286,8],[287,13],[288,14],[279,8],[120,15],[117,16],[121,17],[118,18],[44,19],[50,20],[49,21],[48,21],[47,21],[46,21],[45,21],[124,22],[126,23],[123,24],[125,25],[102,26],[112,27],[131,28],[128,29],[101,29],[127,30],[55,31],[97,32],[136,33],[134,34],[135,35],[56,36],[57,37],[111,38],[110,39],[82,40],[133,41],[138,42],[150,43],[151,44],[152,45],[153,46],[140,47],[141,48],[142,43],[143,48],[149,49],[139,43],[144,43],[145,48],[146,43],[147,48],[148,43],[156,50],[158,51],[159,34],[160,34],[161,34],[163,52],[162,34],[165,53],[166,34],[167,54],[180,55],[168,53],[169,56],[170,53],[171,34],[164,34],[172,34],[173,57],[174,34],[175,53],[176,34],[177,34],[178,58],[179,34],[202,59],[203,60],[199,61],[198,62],[197,63],[196,64],[192,65],[190,66],[200,67],[187,68],[193,60],[184,69],[183,70],[207,71],[195,72],[194,73],[188,74],[93,75],[209,76],[92,77],[186,78],[185,79],[206,71],[205,80],[204,81],[212,82],[227,83],[221,84],[214,85],[217,86],[216,87],[224,83],[223,83],[222,83],[210,88],[211,89],[220,90],[219,91],[218,92],[191,93],[242,94],[74,95],[243,96],[189,97],[239,98],[240,99],[238,100],[241,101],[237,102],[235,101],[234,103],[233,101],[236,101],[232,93],[231,104],[230,105],[228,106],[229,93],[247,107],[67,108],[63,109],[62,110],[114,111],[60,112],[246,113],[43,114],[41,114],[42,114],[244,114],[69,115],[248,116],[54,117],[59,118],[70,119],[58,120],[109,121],[68,122],[113,111],[208,111],[66,123],[53,124],[115,125],[65,126],[251,127],[116,128],[95,128],[250,129],[181,130],[254,131],[182,131],[249,132],[201,133],[255,134],[252,135],[253,136],[245,137],[73,138],[72,139],[259,140],[264,141],[269,142],[261,143],[262,144],[268,145],[263,8],[79,146],[265,147],[90,148],[267,149],[89,150],[270,151],[98,152],[94,153],[84,154],[87,155],[88,156],[271,157],[86,158],[256,145],[257,159],[258,160],[130,161],[99,162],[108,163],[83,164],[103,165],[104,166],[64,167],[272,168],[77,169],[275,50],[274,170],[213,50],[129,50],[106,171],[107,171],[215,171],[81,50],[276,50],[76,172],[273,50],[278,173],[316,174],[319,175],[317,176],[318,177],[304,178],[321,179],[305,180],[306,181],[311,182],[322,193],[332,194],[307,195],[313,196],[312,197],[334,198],[333,199],[314,200]],"semanticDiagnosticsPerFile":[37,291,294,295,298,296,300,303,302,301,299,297,292,293,329,327,328,330,323,331,324,325,326,308,282,284,290,289,280,281,283,285,286,287,288,279,120,117,121,119,118,44,52,51,50,49,48,47,46,45,124,126,122,123,125,102,112,131,128,101,127,38,55,97,137,71,96,136,134,135,56,57,61,111,110,82,132,133,138,150,154,151,152,153,140,141,142,143,149,139,144,145,146,147,148,155,156,158,157,159,160,161,163,162,165,166,167,180,168,169,170,171,164,172,173,174,175,176,177,178,179,202,203,199,198,197,196,192,190,200,187,193,184,183,207,195,194,188,93,209,92,186,185,206,205,204,212,227,221,226,214,217,216,224,223,222,210,225,211,220,219,218,191,242,74,243,189,239,240,238,241,237,235,234,233,236,232,231,230,228,229,247,67,63,62,114,60,246,40,43,41,42,244,69,248,54,59,70,58,109,68,113,208,66,53,115,65,251,116,95,250,181,254,182,249,201,255,252,253,245,260,73,72,259,264,269,261,78,262,268,263,79,265,266,90,267,91,89,270,85,98,80,94,84,87,88,271,86,256,257,258,130,99,108,83,103,104,64,272,77,275,274,213,129,106,107,215,81,276,75,76,105,273,278,39,277,316,315,100,319,317,320,318,304,321,36,34,35,7,9,8,2,10,11,12,13,14,15,16,17,3,4,18,22,19,20,21,23,24,25,5,26,27,28,29,6,33,30,31,32,1,305,306,311,309,310,335,322,332,307,313,312,334,338,337,336,333,314]},"version":"5.3.2"}