diff --git a/pull/205/v1/build/index.css b/pull/205/v1/build/index.css index 24ce703b..7efbed6a 100644 --- a/pull/205/v1/build/index.css +++ b/pull/205/v1/build/index.css @@ -215,7 +215,6 @@ width: 300px; max-height: 100%; font-family: Arial, sans-serif; - display: none; position: fixed; top: 0; right: 0; diff --git a/pull/205/v1/build/index.css.map b/pull/205/v1/build/index.css.map index 8c1ab791..89e2fb4d 100644 --- a/pull/205/v1/build/index.css.map +++ b/pull/205/v1/build/index.css.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["esbuild-css-modules-plugin-ns-css:src/ui/shared-styles.module.css", "esbuild-css-modules-plugin-ns-css:src/ui/UIField.module.css", "esbuild-css-modules-plugin-ns-css:src/ui/UIGroup.module.css", "esbuild-css-modules-plugin-ns-css:src/ui/HideUISection.module.css", "esbuild-css-modules-plugin-ns-css:src/ui/tooltip.module.css", "esbuild-css-modules-plugin-ns-css:src/ui/UnusedParameters.module.css", "esbuild-css-modules-plugin-ns-css:src/ui/ViewerUI.module.css"], - "sourcesContent": [".shared-styles-module__header_Y_AOrq__0181 {\n color: gray;\n justify-content: space-between;\n margin-bottom: 8px;\n font-size: 14px;\n display: flex;\n}\n\n.shared-styles-module__button_Y_AOrq__0181 {\n cursor: pointer;\n color: #fff;\n background-color: #444;\n border: 1px solid #0000;\n border-radius: 4px;\n justify-content: center;\n align-items: center;\n transition: all .1s;\n display: flex;\n overflow: hidden;\n}\n\n.shared-styles-module__button_Y_AOrq__0181:hover {\n background-color: #555;\n}\n", ".UIField-module__ui-field_lh-KDa__0181 {\n box-sizing: border-box;\n background: #555;\n border: 1px solid #0000;\n border-radius: 4px;\n flex: 1;\n align-items: stretch;\n margin-bottom: 5px;\n padding: 16px 0 3px;\n font-size: 14px;\n display: flex;\n position: relative;\n}\n\n.UIField-module__label_lh-KDa__0181 {\n cursor: text;\n color: #ffffff80;\n pointer-events: none;\n width: calc(100% - 16px);\n font-size: 11px;\n transition: all .2s ease-in-out;\n display: block;\n position: absolute;\n top: 0;\n left: 6px;\n}\n\n.UIField-module__label-focused_lh-KDa__0181 {\n color: #fff;\n}\n\n.UIField-module__text-input_lh-KDa__0181 {\n color: #fff;\n background: none;\n border: none;\n outline: none;\n width: 100%;\n padding: 0 6px;\n display: block;\n}\n\n.UIField-module__select-input_lh-KDa__0181 {\n color: #fff;\n text-align: left;\n background: gray;\n border: none;\n border-radius: 4px;\n width: 100%;\n margin-left: 4px;\n margin-right: 4px;\n display: block;\n}\n\n.UIField-module__submit-button_lh-KDa__0181 {\n font-size: 14px;\n}\n", ".UIGroup-module__ui-group_WUqfdq__0181 {\n padding-left: 8px;\n padding-right: 8px;\n}\n", ".HideUISection-module__hide-ui-section_ygtI5G__0181 {\n padding-left: 8px;\n padding-right: 8px;\n}\n\n.HideUISection-module__hide-ui-section-contents_ygtI5G__0181 {\n justify-content: space-between;\n margin-bottom: 32px;\n display: flex;\n}\n\n.HideUISection-module__hidden_ygtI5G__0181 {\n display: none;\n}\n", ".tooltip-module__tooltip_qonKzG__0181 {\n position: relative;\n}\n\n.tooltip-module__tooltip_qonKzG__0181 .tooltip-module__tooltip-item_qonKzG__0181 {\n visibility: hidden;\n opacity: 0;\n color: #484848;\n z-index: 4;\n background: #fff;\n border: 1px solid #cecece;\n border-radius: 3px;\n min-width: 200px;\n padding: 10px;\n font-size: 14px;\n font-weight: 500;\n transition: all .25s cubic-bezier(0, 0, .2, 1);\n position: absolute;\n box-shadow: 0 2px 1px #bcbcbc;\n}\n\n.tooltip-module__tooltip_qonKzG__0181 .tooltip-module__tooltip-item_qonKzG__0181:after {\n content: \"\";\n border-style: solid;\n width: 0;\n height: 0;\n display: block;\n position: absolute;\n}\n\n.tooltip-module__tooltip_qonKzG__0181 .tooltip-module__tooltip-initiator_qonKzG__0181 {\n cursor: pointer;\n z-index: 5;\n}\n\n.tooltip-module__tooltip_qonKzG__0181[data-direction=\"left\"] .tooltip-module__tooltip-initiator_qonKzG__0181:hover ~ .tooltip-module__tooltip-item_qonKzG__0181 {\n visibility: visible;\n opacity: 1;\n transform: translate3d(0, -50%, 0);\n}\n\n.tooltip-module__tooltip_qonKzG__0181[data-direction=\"left\"] .tooltip-module__tooltip-item_qonKzG__0181 {\n top: 50%;\n right: calc(100% + 1em);\n transform: translate3d(15px, -50%, 0);\n}\n\n.tooltip-module__tooltip_qonKzG__0181[data-direction=\"left\"] .tooltip-module__tooltip-item_qonKzG__0181:after {\n filter: drop-shadow(1px 2px 1px #bcbcbc);\n border-width: .5em 0 .5em .5em;\n border-color: #0000 #0000 #0000 #fff;\n top: 50%;\n right: -.5em;\n transform: translate3d(0, -50%, 0);\n}\n\n.tooltip-module__tooltip_qonKzG__0181[data-direction=\"bottom\"] .tooltip-module__tooltip-initiator_qonKzG__0181:hover ~ .tooltip-module__tooltip-item_qonKzG__0181 {\n visibility: visible;\n opacity: 1;\n transform: translate3d(-50%, 0, 0);\n}\n\n.tooltip-module__tooltip_qonKzG__0181[data-direction=\"bottom\"] .tooltip-module__tooltip-item_qonKzG__0181 {\n top: calc(100% + 1em);\n left: 50%;\n transform: translate3d(-50%, -15px, 0);\n}\n\n.tooltip-module__tooltip_qonKzG__0181[data-direction=\"bottom\"] .tooltip-module__tooltip-item_qonKzG__0181:after {\n filter: drop-shadow(1px -1px 1px #bcbcbc);\n border-width: 0 .5em .5em;\n border-color: #0000 #0000 #fff;\n top: -.5em;\n left: 50%;\n transform: translate3d(-50%, 0, 0);\n}\n", ".UnusedParameters-module__unused-parameters_BZL2TW__0181 {\n margin-top: 8px;\n padding-left: 8px;\n padding-right: 8px;\n}\n\n.UnusedParameters-module__hidden_BZL2TW__0181 {\n display: none;\n}\n\n.UnusedParameters-module__header_BZL2TW__0181 {\n margin-top: 1em;\n font-size: 1.2em;\n font-weight: bold;\n}\n\n.UnusedParameters-module__param-list-item_BZL2TW__0181 {\n justify-content: space-between;\n margin-bottom: 8px;\n font-size: 14px;\n display: flex;\n}\n", ".ViewerUI-module__viewer-ui_ne7v1W__0181 {\n z-index: 1000;\n}\n\n.ViewerUI-module__menu-button_ne7v1W__0181 {\n z-index: 1000;\n color: #fff;\n pointer-events: auto;\n background-color: #00000080;\n padding: 10px;\n position: fixed;\n top: 0;\n right: 0;\n}\n\n.ViewerUI-module__empty-state_ne7v1W__0181 .ViewerUI-module__menu-button_ne7v1W__0181 {\n display: none;\n}\n\n.ViewerUI-module__header_ne7v1W__0181 {\n padding: 8px;\n font-size: 20px;\n}\n\n.ViewerUI-module__contents_ne7v1W__0181 {\n z-index: 1000;\n color: #fff;\n backdrop-filter: blur(10px);\n pointer-events: auto;\n background-color: #121212cc;\n width: 300px;\n max-height: 100%;\n font-family: Arial, sans-serif;\n display: none;\n position: fixed;\n top: 0;\n right: 0;\n overflow: scroll;\n transform: translate(0);\n}\n\n.ViewerUI-module__empty-state_ne7v1W__0181 .ViewerUI-module__contents_ne7v1W__0181 {\n border-radius: 16px;\n max-width: 100%;\n top: 50%;\n right: 50%;\n transform: translate(50%, -50%);\n}\n"], - "mappings": "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", + "sourcesContent": [".shared-styles-module__header_Y_AOrq__0181 {\n color: gray;\n justify-content: space-between;\n margin-bottom: 8px;\n font-size: 14px;\n display: flex;\n}\n\n.shared-styles-module__button_Y_AOrq__0181 {\n cursor: pointer;\n color: #fff;\n background-color: #444;\n border: 1px solid #0000;\n border-radius: 4px;\n justify-content: center;\n align-items: center;\n transition: all .1s;\n display: flex;\n overflow: hidden;\n}\n\n.shared-styles-module__button_Y_AOrq__0181:hover {\n background-color: #555;\n}\n", ".UIField-module__ui-field_lh-KDa__0181 {\n box-sizing: border-box;\n background: #555;\n border: 1px solid #0000;\n border-radius: 4px;\n flex: 1;\n align-items: stretch;\n margin-bottom: 5px;\n padding: 16px 0 3px;\n font-size: 14px;\n display: flex;\n position: relative;\n}\n\n.UIField-module__label_lh-KDa__0181 {\n cursor: text;\n color: #ffffff80;\n pointer-events: none;\n width: calc(100% - 16px);\n font-size: 11px;\n transition: all .2s ease-in-out;\n display: block;\n position: absolute;\n top: 0;\n left: 6px;\n}\n\n.UIField-module__label-focused_lh-KDa__0181 {\n color: #fff;\n}\n\n.UIField-module__text-input_lh-KDa__0181 {\n color: #fff;\n background: none;\n border: none;\n outline: none;\n width: 100%;\n padding: 0 6px;\n display: block;\n}\n\n.UIField-module__select-input_lh-KDa__0181 {\n color: #fff;\n text-align: left;\n background: gray;\n border: none;\n border-radius: 4px;\n width: 100%;\n margin-left: 4px;\n margin-right: 4px;\n display: block;\n}\n\n.UIField-module__submit-button_lh-KDa__0181 {\n font-size: 14px;\n}\n", ".UIGroup-module__ui-group_WUqfdq__0181 {\n padding-left: 8px;\n padding-right: 8px;\n}\n", ".HideUISection-module__hide-ui-section_ygtI5G__0181 {\n padding-left: 8px;\n padding-right: 8px;\n}\n\n.HideUISection-module__hide-ui-section-contents_ygtI5G__0181 {\n justify-content: space-between;\n margin-bottom: 32px;\n display: flex;\n}\n\n.HideUISection-module__hidden_ygtI5G__0181 {\n display: none;\n}\n", ".tooltip-module__tooltip_qonKzG__0181 {\n position: relative;\n}\n\n.tooltip-module__tooltip_qonKzG__0181 .tooltip-module__tooltip-item_qonKzG__0181 {\n visibility: hidden;\n opacity: 0;\n color: #484848;\n z-index: 4;\n background: #fff;\n border: 1px solid #cecece;\n border-radius: 3px;\n min-width: 200px;\n padding: 10px;\n font-size: 14px;\n font-weight: 500;\n transition: all .25s cubic-bezier(0, 0, .2, 1);\n position: absolute;\n box-shadow: 0 2px 1px #bcbcbc;\n}\n\n.tooltip-module__tooltip_qonKzG__0181 .tooltip-module__tooltip-item_qonKzG__0181:after {\n content: \"\";\n border-style: solid;\n width: 0;\n height: 0;\n display: block;\n position: absolute;\n}\n\n.tooltip-module__tooltip_qonKzG__0181 .tooltip-module__tooltip-initiator_qonKzG__0181 {\n cursor: pointer;\n z-index: 5;\n}\n\n.tooltip-module__tooltip_qonKzG__0181[data-direction=\"left\"] .tooltip-module__tooltip-initiator_qonKzG__0181:hover ~ .tooltip-module__tooltip-item_qonKzG__0181 {\n visibility: visible;\n opacity: 1;\n transform: translate3d(0, -50%, 0);\n}\n\n.tooltip-module__tooltip_qonKzG__0181[data-direction=\"left\"] .tooltip-module__tooltip-item_qonKzG__0181 {\n top: 50%;\n right: calc(100% + 1em);\n transform: translate3d(15px, -50%, 0);\n}\n\n.tooltip-module__tooltip_qonKzG__0181[data-direction=\"left\"] .tooltip-module__tooltip-item_qonKzG__0181:after {\n filter: drop-shadow(1px 2px 1px #bcbcbc);\n border-width: .5em 0 .5em .5em;\n border-color: #0000 #0000 #0000 #fff;\n top: 50%;\n right: -.5em;\n transform: translate3d(0, -50%, 0);\n}\n\n.tooltip-module__tooltip_qonKzG__0181[data-direction=\"bottom\"] .tooltip-module__tooltip-initiator_qonKzG__0181:hover ~ .tooltip-module__tooltip-item_qonKzG__0181 {\n visibility: visible;\n opacity: 1;\n transform: translate3d(-50%, 0, 0);\n}\n\n.tooltip-module__tooltip_qonKzG__0181[data-direction=\"bottom\"] .tooltip-module__tooltip-item_qonKzG__0181 {\n top: calc(100% + 1em);\n left: 50%;\n transform: translate3d(-50%, -15px, 0);\n}\n\n.tooltip-module__tooltip_qonKzG__0181[data-direction=\"bottom\"] .tooltip-module__tooltip-item_qonKzG__0181:after {\n filter: drop-shadow(1px -1px 1px #bcbcbc);\n border-width: 0 .5em .5em;\n border-color: #0000 #0000 #fff;\n top: -.5em;\n left: 50%;\n transform: translate3d(-50%, 0, 0);\n}\n", ".UnusedParameters-module__unused-parameters_BZL2TW__0181 {\n margin-top: 8px;\n padding-left: 8px;\n padding-right: 8px;\n}\n\n.UnusedParameters-module__hidden_BZL2TW__0181 {\n display: none;\n}\n\n.UnusedParameters-module__header_BZL2TW__0181 {\n margin-top: 1em;\n font-size: 1.2em;\n font-weight: bold;\n}\n\n.UnusedParameters-module__param-list-item_BZL2TW__0181 {\n justify-content: space-between;\n margin-bottom: 8px;\n font-size: 14px;\n display: flex;\n}\n", ".ViewerUI-module__viewer-ui_ne7v1W__0181 {\n z-index: 1000;\n}\n\n.ViewerUI-module__menu-button_ne7v1W__0181 {\n z-index: 1000;\n color: #fff;\n pointer-events: auto;\n background-color: #00000080;\n padding: 10px;\n position: fixed;\n top: 0;\n right: 0;\n}\n\n.ViewerUI-module__empty-state_ne7v1W__0181 .ViewerUI-module__menu-button_ne7v1W__0181 {\n display: none;\n}\n\n.ViewerUI-module__header_ne7v1W__0181 {\n padding: 8px;\n font-size: 20px;\n}\n\n.ViewerUI-module__contents_ne7v1W__0181 {\n z-index: 1000;\n color: #fff;\n backdrop-filter: blur(10px);\n pointer-events: auto;\n background-color: #121212cc;\n width: 300px;\n max-height: 100%;\n font-family: Arial, sans-serif;\n position: fixed;\n top: 0;\n right: 0;\n overflow: scroll;\n transform: translate(0);\n}\n\n.ViewerUI-module__empty-state_ne7v1W__0181 .ViewerUI-module__contents_ne7v1W__0181 {\n border-radius: 16px;\n max-width: 100%;\n top: 50%;\n right: 50%;\n transform: translate(50%, -50%);\n}\n"], + "mappings": "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", "names": [] } diff --git a/pull/205/v1/build/index.js b/pull/205/v1/build/index.js index b3cd55e7..735d3d52 100644 --- a/pull/205/v1/build/index.js +++ b/pull/205/v1/build/index.js @@ -552,11 +552,11 @@ var ViewerUI = class { document.body.append(this.element); this.contents = document.createElement("div"); this.contents.className = ViewerUI_default.contents; + this.contents.style.display = "none"; this.element.append(this.contents); this.header = document.createElement("div"); this.header.className = ViewerUI_default.header; this.header.textContent = "MML Viewer (Alpha)"; - this.header.style.display = "block"; this.contents.append(this.header); this.groupHolder = document.createElement("div"); this.contents.append(this.groupHolder); diff --git a/pull/205/v1/build/index.js.map b/pull/205/v1/build/index.js.map index c618f7c1..48b6a293 100644 --- a/pull/205/v1/build/index.js.map +++ b/pull/205/v1/build/index.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../src/ui/setUrlParam.ts", "../src/ui/shared-styles.module.css", "../src/ui/UIElement.ts", "../src/ui/UIField.module.css", "../src/ui/UIField.ts", "../src/ui/UIGroup.module.css", "../src/ui/UIGroup.ts", "../src/FormIteration.ts", "../src/PlayCanvasMode.ts", "../src/QueryParamState.ts", "../src/TagsMode.ts", "../src/ThreeJSMode.ts", "../src/ui/HideUISection.module.css", "../src/ui/tooltip.module.css", "../src/ui/HideUISection.ts", "../src/ui/UnusedParameters.module.css", "../src/ui/UnusedParameters.ts", "../src/ui/ViewerUI.module.css", "../src/ui/ViewerUI.ts", "../src/StandaloneViewer.ts", "../src/index.ts"], - "sourcesContent": ["export function setUrlParam(name: string, value: string | null) {\n const params = new URLSearchParams(window.location.search);\n if (value === \"\" || value === null) {\n params.delete(name);\n } else {\n params.set(name, value);\n }\n window.history.replaceState({}, \"\", `${window.location.pathname}?${params}`);\n window.dispatchEvent(new PopStateEvent(\"popstate\"));\n}\n", "import \"esbuild-css-modules-plugin-ns-css:src/ui/shared-styles.module.css\";\n\nexport default {\n \"button\": \"shared-styles-module__button_Y_AOrq__0181\",\n \"header\": \"shared-styles-module__header_Y_AOrq__0181\"\n};\n ", "export class UIElement {\n public readonly element = document.createElement(\"div\");\n\n dispose() {}\n}\n", "import \"esbuild-css-modules-plugin-ns-css:src/ui/UIField.module.css\";\n\nexport default {\n \"label\": \"UIField-module__label_lh-KDa__0181\",\n \"labelFocused\": \"UIField-module__label-focused_lh-KDa__0181\",\n \"selectInput\": \"UIField-module__select-input_lh-KDa__0181\",\n \"submitButton\": \"UIField-module__submit-button_lh-KDa__0181\",\n \"textInput\": \"UIField-module__text-input_lh-KDa__0181\",\n \"uiField\": \"UIField-module__ui-field_lh-KDa__0181\"\n};\n ", "import { FieldDefinition } from \"./FieldDefinition\";\nimport { setUrlParam } from \"./setUrlParam\";\nimport sharedStyles from \"./shared-styles.module.css\";\nimport { UIElement } from \"./UIElement\";\nimport styles from \"./UIField.module.css\";\nimport { UIGroup } from \"./UIGroup\";\n\nexport class UIField extends UIElement {\n private label: HTMLLabelElement;\n private input?: HTMLInputElement;\n\n private selectElement?: HTMLSelectElement;\n\n private submitButton?: HTMLButtonElement;\n\n constructor(\n public fieldDefinition: FieldDefinition,\n public readonly group: UIGroup,\n ) {\n super();\n this.element.className = styles.uiField;\n\n this.label = document.createElement(\"label\");\n this.label.className = styles.label;\n this.label.textContent = fieldDefinition.label;\n this.element.append(this.label);\n\n if (fieldDefinition.options) {\n const selectElement = document.createElement(\"select\");\n this.selectElement = selectElement;\n this.selectElement.className = styles.selectInput;\n\n const unsetOption = document.createElement(\"option\");\n unsetOption.textContent = \"Unset (default: \" + fieldDefinition.defaultValue + \")\";\n unsetOption.value = \"\";\n this.selectElement.append(unsetOption);\n this.element.append(this.selectElement);\n\n for (const option of fieldDefinition.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option;\n this.selectElement.append(optionElement);\n }\n\n if (fieldDefinition.requireSubmission) {\n this.submitButton = document.createElement(\"button\");\n this.submitButton.classList.add(sharedStyles.button, styles.submitButton);\n this.submitButton.textContent = \"Submit\";\n this.submitButton.addEventListener(\"click\", () => {\n this.onChange(selectElement.value);\n });\n this.element.append(this.submitButton);\n } else {\n this.selectElement.addEventListener(\"change\", () => {\n this.onChange(selectElement.value);\n });\n }\n } else {\n const input = document.createElement(\"input\");\n this.input = input;\n this.input.className = styles.textInput;\n this.input.placeholder = `Default: ${fieldDefinition.defaultValue.toString()}`;\n this.input.addEventListener(\"focus\", () => {\n this.label.classList.add(styles.labelFocused);\n });\n this.input.addEventListener(\"blur\", () => {\n this.label.classList.remove(styles.labelFocused);\n });\n this.input.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Enter\") {\n this.onChange(input.value);\n }\n });\n if (fieldDefinition.type === \"number\") {\n this.input.step = \"0.01\";\n this.input.type = \"number\";\n } else if (fieldDefinition.type === \"color\") {\n this.input.type = \"text\";\n } else {\n this.input.type = \"text\";\n }\n this.element.append(this.input);\n\n if (fieldDefinition.requireSubmission) {\n this.submitButton = document.createElement(\"button\");\n this.submitButton.classList.add(sharedStyles.button, styles.submitButton);\n this.submitButton.textContent = \"Submit\";\n this.submitButton.addEventListener(\"click\", () => {\n if (this.input) {\n this.onChange(this.input.value);\n } else if (this.selectElement) {\n this.onChange(this.selectElement.value);\n }\n });\n this.element.append(this.submitButton);\n } else {\n if (this.input) {\n const input = this.input;\n this.input.addEventListener(\"input\", () => {\n this.onChange(input.value);\n });\n } else if (this.selectElement) {\n const selectElement = this.selectElement;\n this.selectElement.addEventListener(\"change\", () => {\n this.onChange(selectElement.value);\n });\n }\n }\n }\n\n const params = new URLSearchParams(window.location.search);\n const value = params.get(fieldDefinition.name);\n if (value) {\n this.setValue(value);\n }\n }\n\n setValue(value: string) {\n if (this.selectElement) {\n this.selectElement.value = value;\n } else if (this.input) {\n this.input.value = value;\n }\n }\n\n onChange(value: string) {\n setUrlParam(this.fieldDefinition.name, value);\n }\n}\n", "import \"esbuild-css-modules-plugin-ns-css:src/ui/UIGroup.module.css\";\n\nexport default {\n \"uiGroup\": \"UIGroup-module__ui-group_WUqfdq__0181\"\n};\n ", "import { GroupDefinition } from \"./FieldDefinition\";\nimport sharedStyles from \"./shared-styles.module.css\";\nimport { UIElement } from \"./UIElement\";\nimport styles from \"./UIGroup.module.css\";\n\nexport class UIGroup {\n public readonly element = document.createElement(\"div\");\n private header: HTMLDivElement;\n\n constructor(public readonly groupDefinition: GroupDefinition) {\n this.element.className = styles.uiGroup;\n this.header = document.createElement(\"div\");\n this.header.className = sharedStyles.header;\n this.header.textContent = groupDefinition.label;\n this.element.append(this.header);\n }\n\n private elements: Array = new Array();\n\n addElement(element: UIElement) {\n if (this.elements.includes(element)) {\n return;\n }\n this.elements.push(element);\n this.element.append(element.element);\n }\n\n removeElement(element: UIElement) {\n const index = this.elements.indexOf(element);\n if (index === -1) {\n return;\n }\n this.elements.splice(index, 1);\n }\n\n dispose() {\n for (const element of this.elements) {\n element.dispose();\n }\n this.elements = [];\n }\n\n isEmpty() {\n return this.elements.length === 0;\n }\n}\n", "import { QueryParamState } from \"./QueryParamState\";\nimport { FieldDefinition, GroupDefinition } from \"./ui/FieldDefinition\";\nimport { UIField } from \"./ui/UIField\";\nimport { UIGroup } from \"./ui/UIGroup\";\nimport { ViewerUI } from \"./ui/ViewerUI\";\n\nexport class FormIteration {\n private unmatchedFields = new Map();\n\n private fields = new Map();\n private groups = new Map();\n\n constructor(\n private queryParamState: QueryParamState,\n private viewerUI: ViewerUI,\n previousFormIteration: FormIteration | null,\n ) {\n if (previousFormIteration) {\n this.unmatchedFields = new Map(previousFormIteration.fields);\n this.fields = new Map(previousFormIteration.fields);\n }\n }\n\n getFieldValue(fieldDefinition: FieldDefinition): string {\n const unmatchedField = this.unmatchedFields.get(fieldDefinition);\n if (unmatchedField) {\n const uiGroup = unmatchedField.group;\n this.groups.set(uiGroup.groupDefinition, uiGroup);\n this.unmatchedFields // We've used this existing field. Mark it as matched.\n .delete(fieldDefinition);\n }\n let field = this.fields.get(fieldDefinition);\n if (!field) {\n // Create a new field\n const groupDefinition = fieldDefinition.groupDefinition;\n let uiGroup = this.groups.get(groupDefinition);\n if (!uiGroup) {\n uiGroup = new UIGroup(groupDefinition);\n this.groups.set(groupDefinition, uiGroup);\n this.viewerUI.addGroup(uiGroup);\n }\n field = new UIField(fieldDefinition, uiGroup);\n uiGroup.addElement(field);\n this.fields.set(fieldDefinition, field);\n }\n\n const readValue = this.queryParamState.read(fieldDefinition.name);\n if (readValue !== null) {\n field.setValue(readValue);\n return readValue;\n }\n return fieldDefinition.defaultValue.toString();\n }\n\n private clearUnmatchedFields() {\n for (const field of this.unmatchedFields.values()) {\n field.dispose();\n field.element.remove();\n const group = field.group;\n group.removeElement(field);\n if (group.isEmpty()) {\n group.dispose();\n this.viewerUI.removeGroup(group);\n this.groups.delete(group.groupDefinition);\n }\n this.fields.delete(field.fieldDefinition);\n }\n this.unmatchedFields.clear();\n }\n\n completed() {\n this.clearUnmatchedFields();\n this.viewerUI.showUnusedParams(Array.from(this.queryParamState.getUnusedParams()));\n }\n}\n", "import { FormIteration } from \"./FormIteration\";\nimport { GraphicsMode } from \"./GraphicsMode\";\nimport { MMLSource } from \"./MMLSource\";\n\nexport class PlayCanvasMode implements GraphicsMode {\n private disposed = false;\n private internalMode: GraphicsMode | null = null;\n\n public readonly type = \"playcanvas\";\n\n constructor(\n private windowTarget: Window,\n private targetForWrappers: HTMLElement,\n private mmlSource: MMLSource,\n private formIteration: FormIteration,\n ) {\n this.init();\n }\n\n private async init() {\n this.internalMode = await (async () => {\n const { PlayCanvasModeInternal } = await import(\"./PlayCanvasModeInternal\");\n return new PlayCanvasModeInternal(\n this.windowTarget,\n this.targetForWrappers,\n this.mmlSource,\n this.formIteration,\n );\n })();\n if (this.disposed) {\n this.dispose();\n return;\n }\n }\n\n dispose() {\n this.disposed = true;\n if (this.internalMode) {\n this.internalMode.dispose();\n }\n }\n\n update(formIteration: FormIteration) {\n this.formIteration = formIteration;\n if (!this.internalMode) {\n return;\n }\n this.internalMode.update(formIteration);\n }\n}\n", "export class QueryParamState {\n private params: Map = new Map();\n private usedParams: Set = new Set();\n\n constructor(arg: string | Map = new Map()) {\n if (typeof arg === \"string\") {\n this.params = new Map(new URLSearchParams(arg));\n } else {\n this.params = new Map(arg);\n }\n }\n\n public cloneWithAdditionalParams(params: Map): QueryParamState {\n const newParams = new Map(this.params);\n params.forEach((value, key) => {\n newParams.set(key, value);\n });\n return new QueryParamState(newParams);\n }\n\n public read(key: string): string | null {\n this.usedParams.add(key);\n return this.params.get(key) ?? null;\n }\n\n public getUnusedParams(): Set {\n const unusedParams = new Set(this.params.keys());\n this.usedParams.forEach((key) => {\n unusedParams.delete(key);\n });\n return unusedParams;\n }\n\n public toString(): string {\n const searchParams = new URLSearchParams();\n this.params.forEach((value, key) => {\n searchParams.set(key, value);\n });\n return searchParams.toString();\n }\n}\n", "import { StandaloneTagDebugAdapter } from \"mml-web\";\n\nimport {\n connectGraphicsAdapterToFullScreenScene,\n FullScreenState,\n} from \"./ConnectGraphicsAdapterToFullScreenScene\";\nimport { createFullscreenDiv } from \"./CreateFullscreenDiv\";\nimport { FormIteration } from \"./FormIteration\";\nimport { GraphicsMode } from \"./GraphicsMode\";\nimport { MMLSource } from \"./MMLSource\";\n\nexport class TagsMode implements GraphicsMode {\n private element: HTMLDivElement;\n private disposed = false;\n private graphicsAdapter: StandaloneTagDebugAdapter | null = null;\n private fullScreen: FullScreenState | null = null;\n\n constructor(\n private windowTarget: Window,\n private targetForWrappers: HTMLElement,\n mmlSource: MMLSource,\n private formIteration: FormIteration,\n ) {\n this.element = createFullscreenDiv();\n this.init(mmlSource);\n // TODO - handle formIteration\n }\n\n public readonly type = \"tags\";\n\n private async init(mmlSource: MMLSource) {\n this.graphicsAdapter = await StandaloneTagDebugAdapter.create(this.element);\n if (this.disposed) {\n this.dispose();\n return;\n }\n\n this.fullScreen = connectGraphicsAdapterToFullScreenScene({\n element: this.element,\n graphicsAdapter: this.graphicsAdapter,\n source: mmlSource,\n windowTarget: this.windowTarget,\n targetForWrappers: this.targetForWrappers,\n });\n this.update(this.formIteration);\n }\n\n dispose() {\n this.disposed = true;\n if (this.fullScreen) {\n this.fullScreen.dispose();\n this.fullScreen = null;\n }\n if (this.graphicsAdapter) {\n this.graphicsAdapter.dispose();\n this.graphicsAdapter = null;\n }\n this.element.remove();\n }\n\n update(formIteration: FormIteration) {\n formIteration.completed();\n }\n}\n", "import { FormIteration } from \"./FormIteration\";\nimport { GraphicsMode } from \"./GraphicsMode\";\nimport { MMLSource } from \"./MMLSource\";\n\nexport class ThreeJSMode implements GraphicsMode {\n private disposed = false;\n private internalMode: GraphicsMode | null = null;\n\n public readonly type = \"threejs\";\n\n constructor(\n private windowTarget: Window,\n private targetForWrappers: HTMLElement,\n private mmlSource: MMLSource,\n private formIteration: FormIteration,\n ) {\n this.init();\n }\n\n private async init() {\n this.internalMode = await (async () => {\n const { ThreeJSModeInternal } = await import(\"./ThreeJSModeInternal\");\n return new ThreeJSModeInternal(\n this.windowTarget,\n this.targetForWrappers,\n this.mmlSource,\n this.formIteration,\n );\n })();\n if (this.disposed) {\n this.dispose();\n return;\n }\n }\n\n dispose() {\n this.disposed = true;\n if (this.internalMode) {\n this.internalMode.dispose();\n }\n }\n\n update(formIteration: FormIteration) {\n this.formIteration = formIteration;\n if (!this.internalMode) {\n return;\n }\n this.internalMode.update(formIteration);\n }\n}\n", "import \"esbuild-css-modules-plugin-ns-css:src/ui/HideUISection.module.css\";\n\nexport default {\n \"hidden\": \"HideUISection-module__hidden_ygtI5G__0181\",\n \"hideUiSection\": \"HideUISection-module__hide-ui-section_ygtI5G__0181\",\n \"hideUiSectionContents\": \"HideUISection-module__hide-ui-section-contents_ygtI5G__0181\"\n};\n ", "import \"esbuild-css-modules-plugin-ns-css:src/ui/tooltip.module.css\";\n\nexport default {\n \"tooltip\": \"tooltip-module__tooltip_qonKzG__0181\",\n \"tooltipInitiator\": \"tooltip-module__tooltip-initiator_qonKzG__0181\",\n \"tooltipItem\": \"tooltip-module__tooltip-item_qonKzG__0181\"\n};\n ", "import styles from \"./HideUISection.module.css\";\nimport { setUrlParam } from \"./setUrlParam\";\nimport sharedStyles from \"./shared-styles.module.css\";\nimport tooltipStyles from \"./tooltip.module.css\";\n\nexport class HideUISection {\n public readonly element: HTMLDivElement;\n private hideUiButton: HTMLButtonElement;\n private hideUiHeader: HTMLDivElement;\n private hideUiSectionContents: HTMLDivElement;\n\n constructor() {\n this.element = document.createElement(\"div\");\n this.element.className = styles.hideUiSection;\n\n this.hideUiHeader = document.createElement(\"div\");\n this.hideUiHeader.textContent = \"Hide UI\";\n this.hideUiHeader.className = sharedStyles.header;\n this.element.append(this.hideUiHeader);\n\n this.hideUiSectionContents = document.createElement(\"div\");\n this.hideUiSectionContents.className = styles.hideUiSectionContents;\n this.element.append(this.hideUiSectionContents);\n\n this.hideUiButton = document.createElement(\"button\");\n this.hideUiButton.className = sharedStyles.button;\n this.hideUiButton.textContent = \"Hide UI\";\n this.hideUiButton.addEventListener(\"click\", () => {\n setUrlParam(\"noUI\", \"true\");\n });\n this.hideUiSectionContents.append(this.hideUiButton);\n\n const warningIcon = document.createElement(\"span\");\n warningIcon.className = tooltipStyles.tooltip;\n warningIcon.setAttribute(\"data-direction\", \"left\");\n const warningIconText = document.createElement(\"span\");\n warningIconText.className = tooltipStyles.tooltipInitiator;\n warningIconText.textContent = \"\u26A0\uFE0F\";\n warningIcon.append(warningIconText);\n const warningTooltip = document.createElement(\"span\");\n warningTooltip.className = tooltipStyles.tooltipItem;\n warningTooltip.textContent =\n \"If you hide the UI, it can only be shown again by removing the noUI parameter from the URL\";\n warningIcon.append(warningTooltip);\n this.hideUiSectionContents.append(warningIcon);\n }\n\n show() {\n this.element.classList.remove(styles.hidden);\n }\n\n hide() {\n this.element.classList.add(styles.hidden);\n }\n}\n", "import \"esbuild-css-modules-plugin-ns-css:src/ui/UnusedParameters.module.css\";\n\nexport default {\n \"header\": \"UnusedParameters-module__header_BZL2TW__0181\",\n \"hidden\": \"UnusedParameters-module__hidden_BZL2TW__0181\",\n \"paramListItem\": \"UnusedParameters-module__param-list-item_BZL2TW__0181\",\n \"unusedParameters\": \"UnusedParameters-module__unused-parameters_BZL2TW__0181\"\n};\n ", "import { setUrlParam } from \"./setUrlParam\";\nimport sharedStyles from \"./shared-styles.module.css\";\nimport tooltipStyles from \"./tooltip.module.css\";\nimport styles from \"./UnusedParameters.module.css\";\n\nexport class UnusedParameters {\n public readonly element: HTMLDivElement;\n private header: HTMLDivElement;\n private paramsHolder: HTMLDivElement;\n\n constructor() {\n this.element = document.createElement(\"div\");\n this.element.classList.add(styles.unusedParameters, styles.hidden);\n\n this.header = document.createElement(\"div\");\n this.header.textContent = \"Unused Parameters\";\n this.header.className = sharedStyles.header;\n this.element.append(this.header);\n\n const warningIcon = document.createElement(\"span\");\n warningIcon.className = tooltipStyles.tooltip;\n warningIcon.setAttribute(\"data-direction\", \"left\");\n const warningIconText = document.createElement(\"span\");\n warningIconText.className = tooltipStyles.tooltipInitiator;\n warningIconText.textContent = \"\u26A0\uFE0F\";\n warningIcon.append(warningIconText);\n const warningTooltip = document.createElement(\"span\");\n warningTooltip.className = tooltipStyles.tooltipItem;\n warningTooltip.textContent = \"These parameters are not used by the viewer\";\n warningIcon.append(warningTooltip);\n this.header.append(warningIcon);\n\n this.paramsHolder = document.createElement(\"div\");\n this.element.append(this.paramsHolder);\n }\n\n setParams(params: string[]) {\n this.paramsHolder.innerHTML = \"\";\n if (params.length === 0) {\n this.element.classList.add(styles.hidden);\n return;\n }\n\n this.element.classList.remove(styles.hidden);\n\n for (const param of params) {\n const listItem = document.createElement(\"div\");\n listItem.className = styles.paramListItem;\n const paramName = document.createElement(\"div\");\n paramName.textContent = param;\n listItem.append(paramName);\n const removeButton = document.createElement(\"button\");\n removeButton.className = sharedStyles.button;\n removeButton.textContent = \"Remove\";\n removeButton.addEventListener(\"click\", () => {\n setUrlParam(param, null);\n });\n listItem.append(removeButton);\n this.paramsHolder.append(listItem);\n }\n }\n}\n", "import \"esbuild-css-modules-plugin-ns-css:src/ui/ViewerUI.module.css\";\n\nexport default {\n \"contents\": \"ViewerUI-module__contents_ne7v1W__0181\",\n \"emptyState\": \"ViewerUI-module__empty-state_ne7v1W__0181\",\n \"header\": \"ViewerUI-module__header_ne7v1W__0181\",\n \"menuButton\": \"ViewerUI-module__menu-button_ne7v1W__0181\",\n \"viewerUi\": \"ViewerUI-module__viewer-ui_ne7v1W__0181\"\n};\n ", "import { HideUISection } from \"./HideUISection\";\nimport { UIGroup } from \"./UIGroup\";\nimport { UnusedParameters } from \"./UnusedParameters\";\nimport styles from \"./ViewerUI.module.css\";\n\nexport class ViewerUI {\n private element: HTMLDivElement;\n private contents: HTMLDivElement;\n\n private header: HTMLDivElement;\n private groupHolder: HTMLDivElement;\n\n private unusedParameters: UnusedParameters;\n private hideUISection: HideUISection;\n\n constructor() {\n this.element = document.createElement(\"div\");\n this.element.className = styles.viewerUi;\n this.element.addEventListener(\"wheel\", (e) => e.stopPropagation());\n document.body.append(this.element);\n\n this.contents = document.createElement(\"div\");\n this.contents.className = styles.contents;\n this.element.append(this.contents);\n\n this.header = document.createElement(\"div\");\n this.header.className = styles.header;\n this.header.textContent = \"MML Viewer (Alpha)\";\n this.header.style.display = \"block\";\n this.contents.append(this.header);\n\n this.groupHolder = document.createElement(\"div\");\n this.contents.append(this.groupHolder);\n\n this.unusedParameters = new UnusedParameters();\n this.contents.append(this.unusedParameters.element);\n\n this.hideUISection = new HideUISection();\n this.contents.append(this.hideUISection.element);\n\n const menuIcon = document.createElement(\"button\");\n menuIcon.className = styles.menuButton;\n menuIcon.addEventListener(\"click\", () => {\n this.contents.style.display = this.contents.style.display === \"none\" ? \"block\" : \"none\";\n });\n this.element.append(menuIcon);\n }\n\n addGroup(uiGroup: UIGroup) {\n this.groupHolder.append(uiGroup.element);\n }\n\n showUnusedParams(params: string[]) {\n this.unusedParameters.setParams(params);\n }\n\n showAddressMenu() {\n this.element.classList.add(styles.emptyState);\n this.contents.style.display = \"block\";\n this.hideUISection.hide();\n }\n\n hideAddressMenu() {\n this.element.classList.remove(styles.emptyState);\n this.hideUISection.show();\n }\n\n removeGroup(group: UIGroup) {\n this.groupHolder.removeChild(group.element);\n }\n\n show() {\n this.element.style.display = \"block\";\n }\n\n hide() {\n this.element.style.display = \"none\";\n }\n}\n", "import { parseBoolAttribute } from \"mml-web\";\n\nimport { FormIteration } from \"./FormIteration\";\nimport { GraphicsMode } from \"./GraphicsMode\";\nimport { MMLSource } from \"./MMLSource\";\nimport { PlayCanvasMode } from \"./PlayCanvasMode\";\nimport { QueryParamState } from \"./QueryParamState\";\nimport { TagsMode } from \"./TagsMode\";\nimport { ThreeJSMode } from \"./ThreeJSMode\";\nimport { rendererField, urlField } from \"./ui/fields\";\nimport { ViewerUI } from \"./ui/ViewerUI\";\n\nexport class StandaloneViewer {\n private viewerUI = new ViewerUI();\n private graphicsMode: GraphicsMode | null = null;\n private formIteration: FormIteration | null = null;\n private source: MMLSource | null = null;\n\n constructor(\n private windowTarget: Window,\n private targetForWrappers: HTMLElement,\n ) {\n window.addEventListener(\"popstate\", () => {\n this.handleParams();\n });\n this.handleParams();\n }\n\n private handleParams() {\n const queryParamState = new QueryParamState(window.location.search);\n const formIteration = new FormIteration(queryParamState, this.viewerUI, this.formIteration);\n this.formIteration = formIteration;\n\n const url = formIteration.getFieldValue(urlField);\n const renderer = formIteration.getFieldValue(rendererField);\n const noUI = parseBoolAttribute(queryParamState.read(\"noUI\"), false);\n if (noUI) {\n this.viewerUI.hide();\n } else {\n this.viewerUI.show();\n }\n\n let source: MMLSource;\n if (url) {\n source = { url };\n if (this.source && this.source.url !== url) {\n if (this.graphicsMode) {\n this.graphicsMode.dispose();\n this.graphicsMode = null;\n }\n }\n this.source = source;\n } else {\n if (this.graphicsMode) {\n this.graphicsMode.dispose();\n this.graphicsMode = null;\n }\n this.viewerUI.showAddressMenu();\n this.formIteration.completed();\n return;\n }\n this.viewerUI.hideAddressMenu();\n\n if (this.graphicsMode && this.graphicsMode.type !== renderer) {\n this.graphicsMode.dispose();\n this.graphicsMode = null;\n }\n if (!this.graphicsMode) {\n if (renderer === \"playcanvas\") {\n this.graphicsMode = new PlayCanvasMode(\n this.windowTarget,\n this.targetForWrappers,\n source,\n formIteration,\n );\n } else if (renderer === \"threejs\") {\n this.graphicsMode = new ThreeJSMode(\n this.windowTarget,\n this.targetForWrappers,\n source,\n formIteration,\n );\n } else if (renderer === \"tags\") {\n this.graphicsMode = new TagsMode(\n this.windowTarget,\n this.targetForWrappers,\n source,\n formIteration,\n );\n }\n } else {\n this.graphicsMode.update(formIteration);\n }\n }\n}\n", "import { IframeWrapper, registerCustomElementsToWindow } from \"mml-web\";\n\nimport { StandaloneViewer } from \"./StandaloneViewer\";\n\ndeclare global {\n interface Window {\n \"mml-viewer\": StandaloneViewer;\n }\n}\n\nwindow.addEventListener(\"load\", () => {\n (async () => {\n const { iframeWindow, iframeBody } = await IframeWrapper.create();\n const windowTarget = iframeWindow;\n const targetForWrappers = iframeBody;\n registerCustomElementsToWindow(windowTarget);\n const standaloneViewer = new StandaloneViewer(windowTarget, targetForWrappers);\n window[\"mml-viewer\"] = standaloneViewer;\n })();\n});\n"], - "mappings": "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", + "sourcesContent": ["export function setUrlParam(name: string, value: string | null) {\n const params = new URLSearchParams(window.location.search);\n if (value === \"\" || value === null) {\n params.delete(name);\n } else {\n params.set(name, value);\n }\n window.history.replaceState({}, \"\", `${window.location.pathname}?${params}`);\n window.dispatchEvent(new PopStateEvent(\"popstate\"));\n}\n", "import \"esbuild-css-modules-plugin-ns-css:src/ui/shared-styles.module.css\";\n\nexport default {\n \"button\": \"shared-styles-module__button_Y_AOrq__0181\",\n \"header\": \"shared-styles-module__header_Y_AOrq__0181\"\n};\n ", "export class UIElement {\n public readonly element = document.createElement(\"div\");\n\n dispose() {}\n}\n", "import \"esbuild-css-modules-plugin-ns-css:src/ui/UIField.module.css\";\n\nexport default {\n \"label\": \"UIField-module__label_lh-KDa__0181\",\n \"labelFocused\": \"UIField-module__label-focused_lh-KDa__0181\",\n \"selectInput\": \"UIField-module__select-input_lh-KDa__0181\",\n \"submitButton\": \"UIField-module__submit-button_lh-KDa__0181\",\n \"textInput\": \"UIField-module__text-input_lh-KDa__0181\",\n \"uiField\": \"UIField-module__ui-field_lh-KDa__0181\"\n};\n ", "import { FieldDefinition } from \"./FieldDefinition\";\nimport { setUrlParam } from \"./setUrlParam\";\nimport sharedStyles from \"./shared-styles.module.css\";\nimport { UIElement } from \"./UIElement\";\nimport styles from \"./UIField.module.css\";\nimport { UIGroup } from \"./UIGroup\";\n\nexport class UIField extends UIElement {\n private label: HTMLLabelElement;\n private input?: HTMLInputElement;\n\n private selectElement?: HTMLSelectElement;\n\n private submitButton?: HTMLButtonElement;\n\n constructor(\n public fieldDefinition: FieldDefinition,\n public readonly group: UIGroup,\n ) {\n super();\n this.element.className = styles.uiField;\n\n this.label = document.createElement(\"label\");\n this.label.className = styles.label;\n this.label.textContent = fieldDefinition.label;\n this.element.append(this.label);\n\n if (fieldDefinition.options) {\n const selectElement = document.createElement(\"select\");\n this.selectElement = selectElement;\n this.selectElement.className = styles.selectInput;\n\n const unsetOption = document.createElement(\"option\");\n unsetOption.textContent = \"Unset (default: \" + fieldDefinition.defaultValue + \")\";\n unsetOption.value = \"\";\n this.selectElement.append(unsetOption);\n this.element.append(this.selectElement);\n\n for (const option of fieldDefinition.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option;\n this.selectElement.append(optionElement);\n }\n\n if (fieldDefinition.requireSubmission) {\n this.submitButton = document.createElement(\"button\");\n this.submitButton.classList.add(sharedStyles.button, styles.submitButton);\n this.submitButton.textContent = \"Submit\";\n this.submitButton.addEventListener(\"click\", () => {\n this.onChange(selectElement.value);\n });\n this.element.append(this.submitButton);\n } else {\n this.selectElement.addEventListener(\"change\", () => {\n this.onChange(selectElement.value);\n });\n }\n } else {\n const input = document.createElement(\"input\");\n this.input = input;\n this.input.className = styles.textInput;\n this.input.placeholder = `Default: ${fieldDefinition.defaultValue.toString()}`;\n this.input.addEventListener(\"focus\", () => {\n this.label.classList.add(styles.labelFocused);\n });\n this.input.addEventListener(\"blur\", () => {\n this.label.classList.remove(styles.labelFocused);\n });\n this.input.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Enter\") {\n this.onChange(input.value);\n }\n });\n if (fieldDefinition.type === \"number\") {\n this.input.step = \"0.01\";\n this.input.type = \"number\";\n } else if (fieldDefinition.type === \"color\") {\n this.input.type = \"text\";\n } else {\n this.input.type = \"text\";\n }\n this.element.append(this.input);\n\n if (fieldDefinition.requireSubmission) {\n this.submitButton = document.createElement(\"button\");\n this.submitButton.classList.add(sharedStyles.button, styles.submitButton);\n this.submitButton.textContent = \"Submit\";\n this.submitButton.addEventListener(\"click\", () => {\n if (this.input) {\n this.onChange(this.input.value);\n } else if (this.selectElement) {\n this.onChange(this.selectElement.value);\n }\n });\n this.element.append(this.submitButton);\n } else {\n if (this.input) {\n const input = this.input;\n this.input.addEventListener(\"input\", () => {\n this.onChange(input.value);\n });\n } else if (this.selectElement) {\n const selectElement = this.selectElement;\n this.selectElement.addEventListener(\"change\", () => {\n this.onChange(selectElement.value);\n });\n }\n }\n }\n\n const params = new URLSearchParams(window.location.search);\n const value = params.get(fieldDefinition.name);\n if (value) {\n this.setValue(value);\n }\n }\n\n setValue(value: string) {\n if (this.selectElement) {\n this.selectElement.value = value;\n } else if (this.input) {\n this.input.value = value;\n }\n }\n\n onChange(value: string) {\n setUrlParam(this.fieldDefinition.name, value);\n }\n}\n", "import \"esbuild-css-modules-plugin-ns-css:src/ui/UIGroup.module.css\";\n\nexport default {\n \"uiGroup\": \"UIGroup-module__ui-group_WUqfdq__0181\"\n};\n ", "import { GroupDefinition } from \"./FieldDefinition\";\nimport sharedStyles from \"./shared-styles.module.css\";\nimport { UIElement } from \"./UIElement\";\nimport styles from \"./UIGroup.module.css\";\n\nexport class UIGroup {\n public readonly element = document.createElement(\"div\");\n private header: HTMLDivElement;\n\n constructor(public readonly groupDefinition: GroupDefinition) {\n this.element.className = styles.uiGroup;\n this.header = document.createElement(\"div\");\n this.header.className = sharedStyles.header;\n this.header.textContent = groupDefinition.label;\n this.element.append(this.header);\n }\n\n private elements: Array = new Array();\n\n addElement(element: UIElement) {\n if (this.elements.includes(element)) {\n return;\n }\n this.elements.push(element);\n this.element.append(element.element);\n }\n\n removeElement(element: UIElement) {\n const index = this.elements.indexOf(element);\n if (index === -1) {\n return;\n }\n this.elements.splice(index, 1);\n }\n\n dispose() {\n for (const element of this.elements) {\n element.dispose();\n }\n this.elements = [];\n }\n\n isEmpty() {\n return this.elements.length === 0;\n }\n}\n", "import { QueryParamState } from \"./QueryParamState\";\nimport { FieldDefinition, GroupDefinition } from \"./ui/FieldDefinition\";\nimport { UIField } from \"./ui/UIField\";\nimport { UIGroup } from \"./ui/UIGroup\";\nimport { ViewerUI } from \"./ui/ViewerUI\";\n\nexport class FormIteration {\n private unmatchedFields = new Map();\n\n private fields = new Map();\n private groups = new Map();\n\n constructor(\n private queryParamState: QueryParamState,\n private viewerUI: ViewerUI,\n previousFormIteration: FormIteration | null,\n ) {\n if (previousFormIteration) {\n this.unmatchedFields = new Map(previousFormIteration.fields);\n this.fields = new Map(previousFormIteration.fields);\n }\n }\n\n getFieldValue(fieldDefinition: FieldDefinition): string {\n const unmatchedField = this.unmatchedFields.get(fieldDefinition);\n if (unmatchedField) {\n const uiGroup = unmatchedField.group;\n this.groups.set(uiGroup.groupDefinition, uiGroup);\n this.unmatchedFields // We've used this existing field. Mark it as matched.\n .delete(fieldDefinition);\n }\n let field = this.fields.get(fieldDefinition);\n if (!field) {\n // Create a new field\n const groupDefinition = fieldDefinition.groupDefinition;\n let uiGroup = this.groups.get(groupDefinition);\n if (!uiGroup) {\n uiGroup = new UIGroup(groupDefinition);\n this.groups.set(groupDefinition, uiGroup);\n this.viewerUI.addGroup(uiGroup);\n }\n field = new UIField(fieldDefinition, uiGroup);\n uiGroup.addElement(field);\n this.fields.set(fieldDefinition, field);\n }\n\n const readValue = this.queryParamState.read(fieldDefinition.name);\n if (readValue !== null) {\n field.setValue(readValue);\n return readValue;\n }\n return fieldDefinition.defaultValue.toString();\n }\n\n private clearUnmatchedFields() {\n for (const field of this.unmatchedFields.values()) {\n field.dispose();\n field.element.remove();\n const group = field.group;\n group.removeElement(field);\n if (group.isEmpty()) {\n group.dispose();\n this.viewerUI.removeGroup(group);\n this.groups.delete(group.groupDefinition);\n }\n this.fields.delete(field.fieldDefinition);\n }\n this.unmatchedFields.clear();\n }\n\n completed() {\n this.clearUnmatchedFields();\n this.viewerUI.showUnusedParams(Array.from(this.queryParamState.getUnusedParams()));\n }\n}\n", "import { FormIteration } from \"./FormIteration\";\nimport { GraphicsMode } from \"./GraphicsMode\";\nimport { MMLSource } from \"./MMLSource\";\n\nexport class PlayCanvasMode implements GraphicsMode {\n private disposed = false;\n private internalMode: GraphicsMode | null = null;\n\n public readonly type = \"playcanvas\";\n\n constructor(\n private windowTarget: Window,\n private targetForWrappers: HTMLElement,\n private mmlSource: MMLSource,\n private formIteration: FormIteration,\n ) {\n this.init();\n }\n\n private async init() {\n this.internalMode = await (async () => {\n const { PlayCanvasModeInternal } = await import(\"./PlayCanvasModeInternal\");\n return new PlayCanvasModeInternal(\n this.windowTarget,\n this.targetForWrappers,\n this.mmlSource,\n this.formIteration,\n );\n })();\n if (this.disposed) {\n this.dispose();\n return;\n }\n }\n\n dispose() {\n this.disposed = true;\n if (this.internalMode) {\n this.internalMode.dispose();\n }\n }\n\n update(formIteration: FormIteration) {\n this.formIteration = formIteration;\n if (!this.internalMode) {\n return;\n }\n this.internalMode.update(formIteration);\n }\n}\n", "export class QueryParamState {\n private params: Map = new Map();\n private usedParams: Set = new Set();\n\n constructor(arg: string | Map = new Map()) {\n if (typeof arg === \"string\") {\n this.params = new Map(new URLSearchParams(arg));\n } else {\n this.params = new Map(arg);\n }\n }\n\n public cloneWithAdditionalParams(params: Map): QueryParamState {\n const newParams = new Map(this.params);\n params.forEach((value, key) => {\n newParams.set(key, value);\n });\n return new QueryParamState(newParams);\n }\n\n public read(key: string): string | null {\n this.usedParams.add(key);\n return this.params.get(key) ?? null;\n }\n\n public getUnusedParams(): Set {\n const unusedParams = new Set(this.params.keys());\n this.usedParams.forEach((key) => {\n unusedParams.delete(key);\n });\n return unusedParams;\n }\n\n public toString(): string {\n const searchParams = new URLSearchParams();\n this.params.forEach((value, key) => {\n searchParams.set(key, value);\n });\n return searchParams.toString();\n }\n}\n", "import { StandaloneTagDebugAdapter } from \"mml-web\";\n\nimport {\n connectGraphicsAdapterToFullScreenScene,\n FullScreenState,\n} from \"./ConnectGraphicsAdapterToFullScreenScene\";\nimport { createFullscreenDiv } from \"./CreateFullscreenDiv\";\nimport { FormIteration } from \"./FormIteration\";\nimport { GraphicsMode } from \"./GraphicsMode\";\nimport { MMLSource } from \"./MMLSource\";\n\nexport class TagsMode implements GraphicsMode {\n private element: HTMLDivElement;\n private disposed = false;\n private graphicsAdapter: StandaloneTagDebugAdapter | null = null;\n private fullScreen: FullScreenState | null = null;\n\n constructor(\n private windowTarget: Window,\n private targetForWrappers: HTMLElement,\n mmlSource: MMLSource,\n private formIteration: FormIteration,\n ) {\n this.element = createFullscreenDiv();\n this.init(mmlSource);\n // TODO - handle formIteration\n }\n\n public readonly type = \"tags\";\n\n private async init(mmlSource: MMLSource) {\n this.graphicsAdapter = await StandaloneTagDebugAdapter.create(this.element);\n if (this.disposed) {\n this.dispose();\n return;\n }\n\n this.fullScreen = connectGraphicsAdapterToFullScreenScene({\n element: this.element,\n graphicsAdapter: this.graphicsAdapter,\n source: mmlSource,\n windowTarget: this.windowTarget,\n targetForWrappers: this.targetForWrappers,\n });\n this.update(this.formIteration);\n }\n\n dispose() {\n this.disposed = true;\n if (this.fullScreen) {\n this.fullScreen.dispose();\n this.fullScreen = null;\n }\n if (this.graphicsAdapter) {\n this.graphicsAdapter.dispose();\n this.graphicsAdapter = null;\n }\n this.element.remove();\n }\n\n update(formIteration: FormIteration) {\n formIteration.completed();\n }\n}\n", "import { FormIteration } from \"./FormIteration\";\nimport { GraphicsMode } from \"./GraphicsMode\";\nimport { MMLSource } from \"./MMLSource\";\n\nexport class ThreeJSMode implements GraphicsMode {\n private disposed = false;\n private internalMode: GraphicsMode | null = null;\n\n public readonly type = \"threejs\";\n\n constructor(\n private windowTarget: Window,\n private targetForWrappers: HTMLElement,\n private mmlSource: MMLSource,\n private formIteration: FormIteration,\n ) {\n this.init();\n }\n\n private async init() {\n this.internalMode = await (async () => {\n const { ThreeJSModeInternal } = await import(\"./ThreeJSModeInternal\");\n return new ThreeJSModeInternal(\n this.windowTarget,\n this.targetForWrappers,\n this.mmlSource,\n this.formIteration,\n );\n })();\n if (this.disposed) {\n this.dispose();\n return;\n }\n }\n\n dispose() {\n this.disposed = true;\n if (this.internalMode) {\n this.internalMode.dispose();\n }\n }\n\n update(formIteration: FormIteration) {\n this.formIteration = formIteration;\n if (!this.internalMode) {\n return;\n }\n this.internalMode.update(formIteration);\n }\n}\n", "import \"esbuild-css-modules-plugin-ns-css:src/ui/HideUISection.module.css\";\n\nexport default {\n \"hidden\": \"HideUISection-module__hidden_ygtI5G__0181\",\n \"hideUiSection\": \"HideUISection-module__hide-ui-section_ygtI5G__0181\",\n \"hideUiSectionContents\": \"HideUISection-module__hide-ui-section-contents_ygtI5G__0181\"\n};\n ", "import \"esbuild-css-modules-plugin-ns-css:src/ui/tooltip.module.css\";\n\nexport default {\n \"tooltip\": \"tooltip-module__tooltip_qonKzG__0181\",\n \"tooltipInitiator\": \"tooltip-module__tooltip-initiator_qonKzG__0181\",\n \"tooltipItem\": \"tooltip-module__tooltip-item_qonKzG__0181\"\n};\n ", "import styles from \"./HideUISection.module.css\";\nimport { setUrlParam } from \"./setUrlParam\";\nimport sharedStyles from \"./shared-styles.module.css\";\nimport tooltipStyles from \"./tooltip.module.css\";\n\nexport class HideUISection {\n public readonly element: HTMLDivElement;\n private hideUiButton: HTMLButtonElement;\n private hideUiHeader: HTMLDivElement;\n private hideUiSectionContents: HTMLDivElement;\n\n constructor() {\n this.element = document.createElement(\"div\");\n this.element.className = styles.hideUiSection;\n\n this.hideUiHeader = document.createElement(\"div\");\n this.hideUiHeader.textContent = \"Hide UI\";\n this.hideUiHeader.className = sharedStyles.header;\n this.element.append(this.hideUiHeader);\n\n this.hideUiSectionContents = document.createElement(\"div\");\n this.hideUiSectionContents.className = styles.hideUiSectionContents;\n this.element.append(this.hideUiSectionContents);\n\n this.hideUiButton = document.createElement(\"button\");\n this.hideUiButton.className = sharedStyles.button;\n this.hideUiButton.textContent = \"Hide UI\";\n this.hideUiButton.addEventListener(\"click\", () => {\n setUrlParam(\"noUI\", \"true\");\n });\n this.hideUiSectionContents.append(this.hideUiButton);\n\n const warningIcon = document.createElement(\"span\");\n warningIcon.className = tooltipStyles.tooltip;\n warningIcon.setAttribute(\"data-direction\", \"left\");\n const warningIconText = document.createElement(\"span\");\n warningIconText.className = tooltipStyles.tooltipInitiator;\n warningIconText.textContent = \"\u26A0\uFE0F\";\n warningIcon.append(warningIconText);\n const warningTooltip = document.createElement(\"span\");\n warningTooltip.className = tooltipStyles.tooltipItem;\n warningTooltip.textContent =\n \"If you hide the UI, it can only be shown again by removing the noUI parameter from the URL\";\n warningIcon.append(warningTooltip);\n this.hideUiSectionContents.append(warningIcon);\n }\n\n show() {\n this.element.classList.remove(styles.hidden);\n }\n\n hide() {\n this.element.classList.add(styles.hidden);\n }\n}\n", "import \"esbuild-css-modules-plugin-ns-css:src/ui/UnusedParameters.module.css\";\n\nexport default {\n \"header\": \"UnusedParameters-module__header_BZL2TW__0181\",\n \"hidden\": \"UnusedParameters-module__hidden_BZL2TW__0181\",\n \"paramListItem\": \"UnusedParameters-module__param-list-item_BZL2TW__0181\",\n \"unusedParameters\": \"UnusedParameters-module__unused-parameters_BZL2TW__0181\"\n};\n ", "import { setUrlParam } from \"./setUrlParam\";\nimport sharedStyles from \"./shared-styles.module.css\";\nimport tooltipStyles from \"./tooltip.module.css\";\nimport styles from \"./UnusedParameters.module.css\";\n\nexport class UnusedParameters {\n public readonly element: HTMLDivElement;\n private header: HTMLDivElement;\n private paramsHolder: HTMLDivElement;\n\n constructor() {\n this.element = document.createElement(\"div\");\n this.element.classList.add(styles.unusedParameters, styles.hidden);\n\n this.header = document.createElement(\"div\");\n this.header.textContent = \"Unused Parameters\";\n this.header.className = sharedStyles.header;\n this.element.append(this.header);\n\n const warningIcon = document.createElement(\"span\");\n warningIcon.className = tooltipStyles.tooltip;\n warningIcon.setAttribute(\"data-direction\", \"left\");\n const warningIconText = document.createElement(\"span\");\n warningIconText.className = tooltipStyles.tooltipInitiator;\n warningIconText.textContent = \"\u26A0\uFE0F\";\n warningIcon.append(warningIconText);\n const warningTooltip = document.createElement(\"span\");\n warningTooltip.className = tooltipStyles.tooltipItem;\n warningTooltip.textContent = \"These parameters are not used by the viewer\";\n warningIcon.append(warningTooltip);\n this.header.append(warningIcon);\n\n this.paramsHolder = document.createElement(\"div\");\n this.element.append(this.paramsHolder);\n }\n\n setParams(params: string[]) {\n this.paramsHolder.innerHTML = \"\";\n if (params.length === 0) {\n this.element.classList.add(styles.hidden);\n return;\n }\n\n this.element.classList.remove(styles.hidden);\n\n for (const param of params) {\n const listItem = document.createElement(\"div\");\n listItem.className = styles.paramListItem;\n const paramName = document.createElement(\"div\");\n paramName.textContent = param;\n listItem.append(paramName);\n const removeButton = document.createElement(\"button\");\n removeButton.className = sharedStyles.button;\n removeButton.textContent = \"Remove\";\n removeButton.addEventListener(\"click\", () => {\n setUrlParam(param, null);\n });\n listItem.append(removeButton);\n this.paramsHolder.append(listItem);\n }\n }\n}\n", "import \"esbuild-css-modules-plugin-ns-css:src/ui/ViewerUI.module.css\";\n\nexport default {\n \"contents\": \"ViewerUI-module__contents_ne7v1W__0181\",\n \"emptyState\": \"ViewerUI-module__empty-state_ne7v1W__0181\",\n \"header\": \"ViewerUI-module__header_ne7v1W__0181\",\n \"menuButton\": \"ViewerUI-module__menu-button_ne7v1W__0181\",\n \"viewerUi\": \"ViewerUI-module__viewer-ui_ne7v1W__0181\"\n};\n ", "import { HideUISection } from \"./HideUISection\";\nimport { UIGroup } from \"./UIGroup\";\nimport { UnusedParameters } from \"./UnusedParameters\";\nimport styles from \"./ViewerUI.module.css\";\n\nexport class ViewerUI {\n private element: HTMLDivElement;\n private contents: HTMLDivElement;\n\n private header: HTMLDivElement;\n private groupHolder: HTMLDivElement;\n\n private unusedParameters: UnusedParameters;\n private hideUISection: HideUISection;\n\n constructor() {\n this.element = document.createElement(\"div\");\n this.element.className = styles.viewerUi;\n this.element.addEventListener(\"wheel\", (e) => e.stopPropagation());\n document.body.append(this.element);\n\n this.contents = document.createElement(\"div\");\n this.contents.className = styles.contents;\n this.contents.style.display = \"none\";\n this.element.append(this.contents);\n\n this.header = document.createElement(\"div\");\n this.header.className = styles.header;\n this.header.textContent = \"MML Viewer (Alpha)\";\n this.contents.append(this.header);\n\n this.groupHolder = document.createElement(\"div\");\n this.contents.append(this.groupHolder);\n\n this.unusedParameters = new UnusedParameters();\n this.contents.append(this.unusedParameters.element);\n\n this.hideUISection = new HideUISection();\n this.contents.append(this.hideUISection.element);\n\n const menuIcon = document.createElement(\"button\");\n menuIcon.className = styles.menuButton;\n menuIcon.addEventListener(\"click\", () => {\n this.contents.style.display = this.contents.style.display === \"none\" ? \"block\" : \"none\";\n });\n this.element.append(menuIcon);\n }\n\n addGroup(uiGroup: UIGroup) {\n this.groupHolder.append(uiGroup.element);\n }\n\n showUnusedParams(params: string[]) {\n this.unusedParameters.setParams(params);\n }\n\n showAddressMenu() {\n this.element.classList.add(styles.emptyState);\n this.contents.style.display = \"block\";\n this.hideUISection.hide();\n }\n\n hideAddressMenu() {\n this.element.classList.remove(styles.emptyState);\n this.hideUISection.show();\n }\n\n removeGroup(group: UIGroup) {\n this.groupHolder.removeChild(group.element);\n }\n\n show() {\n this.element.style.display = \"block\";\n }\n\n hide() {\n this.element.style.display = \"none\";\n }\n}\n", "import { parseBoolAttribute } from \"mml-web\";\n\nimport { FormIteration } from \"./FormIteration\";\nimport { GraphicsMode } from \"./GraphicsMode\";\nimport { MMLSource } from \"./MMLSource\";\nimport { PlayCanvasMode } from \"./PlayCanvasMode\";\nimport { QueryParamState } from \"./QueryParamState\";\nimport { TagsMode } from \"./TagsMode\";\nimport { ThreeJSMode } from \"./ThreeJSMode\";\nimport { rendererField, urlField } from \"./ui/fields\";\nimport { ViewerUI } from \"./ui/ViewerUI\";\n\nexport class StandaloneViewer {\n private viewerUI = new ViewerUI();\n private graphicsMode: GraphicsMode | null = null;\n private formIteration: FormIteration | null = null;\n private source: MMLSource | null = null;\n\n constructor(\n private windowTarget: Window,\n private targetForWrappers: HTMLElement,\n ) {\n window.addEventListener(\"popstate\", () => {\n this.handleParams();\n });\n this.handleParams();\n }\n\n private handleParams() {\n const queryParamState = new QueryParamState(window.location.search);\n const formIteration = new FormIteration(queryParamState, this.viewerUI, this.formIteration);\n this.formIteration = formIteration;\n\n const url = formIteration.getFieldValue(urlField);\n const renderer = formIteration.getFieldValue(rendererField);\n const noUI = parseBoolAttribute(queryParamState.read(\"noUI\"), false);\n if (noUI) {\n this.viewerUI.hide();\n } else {\n this.viewerUI.show();\n }\n\n let source: MMLSource;\n if (url) {\n source = { url };\n if (this.source && this.source.url !== url) {\n if (this.graphicsMode) {\n this.graphicsMode.dispose();\n this.graphicsMode = null;\n }\n }\n this.source = source;\n } else {\n if (this.graphicsMode) {\n this.graphicsMode.dispose();\n this.graphicsMode = null;\n }\n this.viewerUI.showAddressMenu();\n this.formIteration.completed();\n return;\n }\n this.viewerUI.hideAddressMenu();\n\n if (this.graphicsMode && this.graphicsMode.type !== renderer) {\n this.graphicsMode.dispose();\n this.graphicsMode = null;\n }\n if (!this.graphicsMode) {\n if (renderer === \"playcanvas\") {\n this.graphicsMode = new PlayCanvasMode(\n this.windowTarget,\n this.targetForWrappers,\n source,\n formIteration,\n );\n } else if (renderer === \"threejs\") {\n this.graphicsMode = new ThreeJSMode(\n this.windowTarget,\n this.targetForWrappers,\n source,\n formIteration,\n );\n } else if (renderer === \"tags\") {\n this.graphicsMode = new TagsMode(\n this.windowTarget,\n this.targetForWrappers,\n source,\n formIteration,\n );\n }\n } else {\n this.graphicsMode.update(formIteration);\n }\n }\n}\n", "import { IframeWrapper, registerCustomElementsToWindow } from \"mml-web\";\n\nimport { StandaloneViewer } from \"./StandaloneViewer\";\n\ndeclare global {\n interface Window {\n \"mml-viewer\": StandaloneViewer;\n }\n}\n\nwindow.addEventListener(\"load\", () => {\n (async () => {\n const { iframeWindow, iframeBody } = await IframeWrapper.create();\n const windowTarget = iframeWindow;\n const targetForWrappers = iframeBody;\n registerCustomElementsToWindow(windowTarget);\n const standaloneViewer = new StandaloneViewer(windowTarget, targetForWrappers);\n window[\"mml-viewer\"] = standaloneViewer;\n })();\n});\n"], + "mappings": "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", "names": ["input"] }