@genesislcap/foundation-layout 15.74.0 → 15.75.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/custom-elements.json +1503 -1503
  2. package/package.json +13 -13
@@ -187,47 +187,88 @@
187
187
  },
188
188
  {
189
189
  "kind": "javascript-module",
190
- "path": "src/main/index.ts",
191
- "declarations": [],
190
+ "path": "src/styles/constants.ts",
191
+ "declarations": [
192
+ {
193
+ "kind": "function",
194
+ "name": "glVisualConfig",
195
+ "return": {
196
+ "type": {
197
+ "text": "Omit<LayoutConfig, 'root'>"
198
+ }
199
+ }
200
+ },
201
+ {
202
+ "kind": "variable",
203
+ "name": "LAYOUT_ICONS",
204
+ "type": {
205
+ "text": "{\n renameSVG,\n maximiseSVG,\n minimiseSVG,\n closeSVG,\n tabDropdownSVG,\n popoutSVG,\n}"
206
+ },
207
+ "default": "{\n renameSVG,\n maximiseSVG,\n minimiseSVG,\n closeSVG,\n tabDropdownSVG,\n popoutSVG,\n}",
208
+ "description": "A collection of SVG icons in base64 format.",
209
+ "privacy": "public"
210
+ }
211
+ ],
192
212
  "exports": [
193
213
  {
194
214
  "kind": "js",
195
- "name": "FoundationLayoutItem",
215
+ "name": "glVisualConfig",
196
216
  "declaration": {
197
- "name": "FoundationLayoutItem",
198
- "module": "./layout-item"
217
+ "name": "glVisualConfig",
218
+ "module": "src/styles/constants.ts"
199
219
  }
200
220
  },
201
221
  {
202
222
  "kind": "js",
203
- "name": "FoundationLayoutRegion",
223
+ "name": "LAYOUT_ICONS",
204
224
  "declaration": {
205
- "name": "FoundationLayoutRegion",
206
- "module": "./layout-region"
225
+ "name": "LAYOUT_ICONS",
226
+ "module": "src/styles/constants.ts"
207
227
  }
208
- },
228
+ }
229
+ ]
230
+ },
231
+ {
232
+ "kind": "javascript-module",
233
+ "path": "src/styles/dragging.styles.ts",
234
+ "declarations": [
235
+ {
236
+ "kind": "variable",
237
+ "name": "globalDraggingStyles",
238
+ "default": "`\n .lm_dragProxy .lm_content {\n box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.9);\n }\n .lm_dropTargetIndicator {\n outline: 1px dashed #cccccc;\n transition: all 200ms ease;\n }\n .lm_dropTargetIndicator .lm_inner {\n background: var(${neutralFillStealthRest.cssCustomProperty});\n opacity: 0.2;\n }\n .lm_dragProxy.lm_left .lm_header,\n .lm_dragProxy.lm_right .lm_header {\n width: 20px;\n float: left;\n vertical-align: top;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs,\n .lm_dragProxy.lm_right .lm_header .lm_tabs {\n transform-origin: left top;\n top: 0;\n width: 1000px;\n }\n .lm_dragProxy.lm_left .lm_header .lm_controls,\n .lm_dragProxy.lm_right .lm_header .lm_controls {\n bottom: 0;\n }\n .lm_dragProxy.lm_left .lm_items,\n .lm_dragProxy.lm_right .lm_items {\n float: left;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs {\n transform: rotate(-90deg) scaleX(-1);\n left: 0;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs .lm_tab {\n transform: scaleX(-1);\n margin-top: 1px;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabdropdown_list {\n top: initial;\n right: initial;\n left: 20px;\n }\n .lm_dragProxy.lm_right .lm_content {\n float: left;\n }\n .lm_dragProxy.lm_right .lm_header .lm_tabs {\n transform: rotate(90deg) scaleX(1);\n left: 100%;\n margin-left: 0;\n }\n .lm_dragProxy.lm_right .lm_header .lm_controls {\n left: 3px;\n }\n .lm_dragProxy.lm_right .lm_header .lm_tabdropdown_list {\n top: initial;\n right: 20px;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_tab {\n margin-top: 0;\n border-top: none;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_controls,\n .lm_stack.lm_bottom .lm_header .lm_controls {\n top: 3px;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_tabdropdown_list,\n .lm_stack.lm_bottom .lm_header .lm_tabdropdown_list {\n top: initial;\n bottom: 20px;\n }\n .lm_dragProxy {\n cursor: move;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 30;\n }\n .lm_dragProxy .lm_header {\n background: transparent;\n }\n .lm_dragProxy .lm_title {\n color: white;\n padding-left: 10px;\n }\n .lm_dragProxy .lm_content {\n border-top: none;\n overflow: hidden;\n }\n .lm_dropTargetIndicator {\n display: none;\n position: absolute;\n z-index: 20;\n }\n .lm_dropTargetIndicator .lm_inner {\n width: 100%;\n height: 100%;\n position: relative;\n top: 0;\n left: 0;\n }\n .lm_transition_indicator {\n display: none;\n width: 20px;\n height: 20px;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 20;\n }\n`",
239
+ "description": "This is defined as a string rather than a css template\nbecause it is applied to a CSSStyleSheet object rather than\nused as a FAST template"
240
+ }
241
+ ],
242
+ "exports": [
209
243
  {
210
244
  "kind": "js",
211
- "name": "FoundationLayout",
245
+ "name": "globalDraggingStyles",
212
246
  "declaration": {
213
- "name": "FoundationLayout",
214
- "module": "./layout-main"
247
+ "name": "globalDraggingStyles",
248
+ "module": "src/styles/dragging.styles.ts"
215
249
  }
216
- },
250
+ }
251
+ ]
252
+ },
253
+ {
254
+ "kind": "javascript-module",
255
+ "path": "src/styles/index.ts",
256
+ "declarations": [],
257
+ "exports": [
217
258
  {
218
259
  "kind": "js",
219
- "name": "layoutStyles",
260
+ "name": "*",
220
261
  "declaration": {
221
- "name": "layoutStyles",
222
- "module": "./layout-main"
262
+ "name": "*",
263
+ "package": "./constants"
223
264
  }
224
265
  },
225
266
  {
226
267
  "kind": "js",
227
- "name": "layoutTemplate",
268
+ "name": "*",
228
269
  "declaration": {
229
- "name": "layoutTemplate",
230
- "module": "./layout-main"
270
+ "name": "*",
271
+ "package": "./dragging.styles"
231
272
  }
232
273
  },
233
274
  {
@@ -235,772 +276,522 @@
235
276
  "name": "*",
236
277
  "declaration": {
237
278
  "name": "*",
238
- "package": "./layout-components"
279
+ "package": "./layout.styles"
239
280
  }
240
281
  }
241
282
  ]
242
283
  },
243
284
  {
244
285
  "kind": "javascript-module",
245
- "path": "src/main/layout-components.ts",
286
+ "path": "src/styles/layout.styles.ts",
246
287
  "declarations": [
247
288
  {
248
289
  "kind": "variable",
249
- "name": "foundationLayoutComponents",
290
+ "name": "layoutStyles",
291
+ "default": "css`\n ${containerStyles}\n ${loadingSpinnerStyles}\n\n :host {\n --foundation-tab-height: calc(\n (((var(--base-height-multiplier) + var(--density)) * var(--design-unit)) - 4) * 1px\n );\n }\n\n .lm_goldenlayout {\n border-radius: calc(var(--control-corner-radius) * 1.5px);\n font-family: var(--body-font);\n box-sizing: border-box;\n }\n\n .lm_goldenlayout * {\n box-sizing: border-box;\n }\n\n .lm_stack.lm_item {\n background-color: var(--rapid-layout-item-background, var(--neutral-layer-3));\n border-style: solid;\n border-width: var(--rapid-layout-item-border-width, 0);\n border-color: var(--rapid-layout-item-border-color, var(--neutral-stroke-rest));\n border-radius: var(--card-corner-radius, calc(var(--control-corner-radius) * 1.5px));\n box-sizing: border-box;\n }\n\n .lm_maximised .lm_header {\n border-bottom: var(--card-border, 0);\n position: unset;\n }\n\n .lm_maximised .lm_header .lm_tabs {\n z-index: 3;\n }\n\n .lm_content {\n background-color: var(--neutral-layer-card-container);\n border-radius: calc(var(--control-corner-radius) * 1.5px) calc(var(--control-corner-radius) * 1.5px)\n var(--card-corner-radius, calc(var(--control-corner-radius) * 1.5px))\n var(--card-corner-radius, calc(var(--control-corner-radius) * 1.5px));\n border: var(--rapid-layout-item-inner-border, 1px solid var(--neutral-stroke-rest));\n box-sizing: border-box;\n color: var(--neutral-foreground-rest);\n }\n\n .lm_header .lm_tabs {\n padding: 0 16px;\n }\n\n .lm_header .lm_tab.lm_active {\n background: var(--tab-active-background-color, var(--neutral-layer-card-container));\n color: var(--accent-foreground-rest);\n border-style: solid;\n border-width: var(--tab-active-border-width, 1px 1px 0 1px);\n border-color: var(--tab-active-border-color, var(--neutral-stroke-rest));\n }\n\n .lm_header .lm_tab {\n align-items: center;\n background: var(--tab-rest-background-color, var(--neutral-layer-4));\n border-style: solid;\n border-width: var(--tab-rest-border-width, 1px);\n border-color: var(--tab-rest-border-color, transparent);\n border-radius: calc(var(--control-corner-radius) * 1.5px)\n calc(var(--control-corner-radius) * 1.5px) 0 0;\n color: var(--accent-foreground-rest);\n display: flex;\n font-family: inherit;\n font-size: var(--type-ramp-minus-1-font-size);\n font-weight: 400;\n height: var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT});\n margin-right: 2px;\n padding: 0 calc((12 + var(--design-unit) * 2 * var(--density)) * 1px);\n float: left;\n cursor: pointer;\n position: relative;\n }\n\n .lm_header .lm_tab:not(.lm_active):hover {\n background-color: var(--neutral-layer-card-container);\n color: var(--accent-foreground-rest);\n }\n\n .lm_header .lm_controls {\n top: 4px;\n display: flex;\n }\n .lm_header .lm_controls > * {\n width: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) - 8px);\n height: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) - 8px);\n background-repeat: no-repeat;\n background-position: center;\n background-size: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) * 0.45);\n background-color: var(\n --icon-button-background,\n color-mix(in srgb, var(--neutral-fill-strong-rest), transparent 90%)\n );\n border-radius: calc(var(--control-corner-radius) * 1.5px);\n margin-right: 4px;\n top: 3px;\n opacity: 1;\n }\n .lm_header .lm_controls > *:hover {\n background-color: color-mix(in srgb, var(--neutral-fill-strong-hover), transparent 75%);\n cursor: pointer;\n }\n\n .lm_controls .lm_maximise {\n background-image: url('${LAYOUT_ICONS.maximiseSVG}');\n }\n .lm_maximised .lm_controls .lm_maximise {\n background-image: url('${LAYOUT_ICONS.minimiseSVG}');\n }\n .lm_controls .lm_close {\n background-image: url('${LAYOUT_ICONS.closeSVG}');\n }\n .lm_header .lm_tab .lm_close_tab {\n background-image: url('${LAYOUT_ICONS.closeSVG}');\n background-size: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) * 0.2777);\n background-repeat: no-repeat;\n background-position: center;\n margin-left: calc((12 + var(--design-unit) * 2 * var(--density)) * 1px);\n position: relative;\n }\n\n .lm_header .lm_tab:not(.lm_active) .lm_title {\n color: var(--neutral-foreground-hint);\n }\n\n .lm_header .lm_controls .lm_tabdropdown::before {\n content: none;\n }\n .lm_header .lm_controls .lm_tabdropdown {\n background-image: url('${LAYOUT_ICONS.tabDropdownSVG}');\n }\n .lm_header .lm_tabdropdown_list {\n top: var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT});\n right: 108px;\n background-color: var(--neutral-layer-3);\n border: 1px solid;\n border-color: var(--neutral-stroke-rest);\n border-radius: calc(var(--control-corner-radius) * 1.5px);\n box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.35);\n }\n .lm_header .lm_tabdropdown_list > .lm_tab {\n box-shadow: none;\n padding: 0 16px;\n white-space: nowrap;\n background-color: transparent;\n color: var(--neutral-foreground-rest);\n height: var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT});\n border-radius: 0;\n overflow: visible;\n text-overflow: unset;\n }\n .lm_header .lm_tabdropdown_list > .lm_tab:last-child {\n border-bottom: 0;\n }\n\n /* gl base styles start */\n .lm_root {\n position: relative;\n }\n .lm_row > .lm_item {\n float: left;\n }\n .lm_content {\n overflow: hidden;\n position: relative;\n }\n .lm_dragging,\n .lm_dragging * {\n cursor: move !important;\n user-select: none;\n }\n .lm_maximised {\n left: 0;\n padding: 0;\n position: absolute;\n top: 0;\n z-index: 40;\n }\n .lm_maximise_placeholder {\n display: none;\n }\n .lm_splitter {\n position: relative;\n z-index: 20;\n }\n .lm_splitter:hover,\n .lm_splitter.lm_dragging {\n background: var(--accent-fill-rest);\n border-radius: calc(var(--control-corner-radius) * 4px);\n }\n .lm_splitter.lm_vertical .lm_drag_handle {\n width: 100%;\n height: 15px;\n position: absolute;\n top: -5px;\n cursor: ns-resize !important;\n }\n .lm_splitter.lm_horizontal {\n float: left;\n height: 100%;\n }\n .lm_splitter.lm_horizontal .lm_drag_handle {\n width: 15px;\n height: 100%;\n position: absolute;\n left: -5px;\n cursor: ew-resize !important;\n }\n .lm_header {\n overflow: visible;\n position: relative;\n border-bottom: var(--card-border, 0);\n }\n .lm_header .lm_controls {\n position: absolute;\n right: 3px;\n }\n .lm_header .lm_controls > li {\n cursor: pointer;\n float: left;\n width: 18px;\n height: 18px;\n text-align: center;\n }\n .lm_header ul {\n margin: 0;\n padding: 0;\n list-style-type: none;\n }\n .lm_header .lm_tabs {\n position: absolute;\n }\n .lm_header .lm_tab i {\n width: 2px;\n height: 19px;\n position: absolute;\n }\n .lm_header .lm_tab i.lm_left {\n top: 0;\n left: -2px;\n }\n .lm_header .lm_tab i.lm_right {\n top: 0;\n right: -2px;\n }\n .lm_header .lm_tab .lm_title {\n display: inline-block;\n overflow: hidden;\n text-overflow: ellipsis;\n user-select: none;\n }\n .lm_header .lm_tab .lm_close_tab {\n width: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) * 0.3888);\n height: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) * 0.3888);\n text-align: center;\n }\n .lm_stack.lm_left .lm_header,\n .lm_stack.lm_right .lm_header {\n height: 100%;\n }\n .lm_dragProxy.lm_left .lm_header,\n .lm_dragProxy.lm_right .lm_header,\n .lm_stack.lm_left .lm_header,\n .lm_stack.lm_right .lm_header {\n width: 20px;\n float: left;\n vertical-align: top;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs,\n .lm_dragProxy.lm_right .lm_header .lm_tabs,\n .lm_stack.lm_left .lm_header .lm_tabs,\n .lm_stack.lm_right .lm_header .lm_tabs {\n transform-origin: left top;\n top: 0;\n width: 1000px;\n }\n .lm_dragProxy.lm_left .lm_header .lm_controls,\n .lm_dragProxy.lm_right .lm_header .lm_controls,\n .lm_stack.lm_left .lm_header .lm_controls,\n .lm_stack.lm_right .lm_header .lm_controls {\n bottom: 0;\n }\n .lm_dragProxy.lm_left .lm_items,\n .lm_dragProxy.lm_right .lm_items,\n .lm_stack.lm_left .lm_items,\n .lm_stack.lm_right .lm_items {\n float: left;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs,\n .lm_stack.lm_left .lm_header .lm_tabs {\n transform: rotate(-90deg) scaleX(-1);\n left: 0;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs .lm_tab,\n .lm_stack.lm_left .lm_header .lm_tabs .lm_tab {\n transform: scaleX(-1);\n margin-top: 1px;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabdropdown_list,\n .lm_stack.lm_left .lm_header .lm_tabdropdown_list {\n top: initial;\n right: initial;\n left: 20px;\n }\n .lm_dragProxy.lm_right .lm_content {\n float: left;\n }\n .lm_dragProxy.lm_right .lm_header .lm_tabs,\n .lm_stack.lm_right .lm_header .lm_tabs {\n transform: rotate(90deg) scaleX(1);\n left: 100%;\n margin-left: 0;\n }\n .lm_dragProxy.lm_right .lm_header .lm_controls,\n .lm_stack.lm_right .lm_header .lm_controls {\n left: 3px;\n }\n .lm_dragProxy.lm_right .lm_header .lm_tabdropdown_list,\n .lm_stack.lm_right .lm_header .lm_tabdropdown_list {\n top: initial;\n right: 20px;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_tab,\n .lm_stack.lm_bottom .lm_header .lm_tab {\n margin-top: 0;\n border-top: none;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_controls,\n .lm_stack.lm_bottom .lm_header .lm_controls {\n top: 3px;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_tabdropdown_list,\n .lm_stack.lm_bottom .lm_header .lm_tabdropdown_list {\n top: initial;\n bottom: 20px;\n }\n .lm_drop_tab_placeholder {\n float: left;\n width: 100px;\n height: 10px;\n visibility: hidden;\n }\n .lm_header .lm_tabdropdown_list {\n position: absolute;\n top: 20px;\n right: 0;\n z-index: 5;\n overflow: hidden;\n }\n .lm_header .lm_tabdropdown_list .lm_tab {\n clear: both;\n padding-right: 10px;\n margin: 0;\n }\n .lm_header .lm_tabdropdown_list .lm_tab .lm_title {\n width: 100px;\n }\n .lm_header .lm_tabdropdown_list .lm_close_tab {\n display: none !important;\n }\n .lm_dragProxy {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 30;\n }\n .lm_dragProxy .lm_header {\n background: transparent;\n }\n .lm_dragProxy .lm_content {\n border-top: none;\n overflow: hidden;\n }\n .lm_dropTargetIndicator {\n display: none;\n position: absolute;\n z-index: 20;\n box-shadow: none;\n }\n .lm_dropTargetIndicator .lm_inner {\n width: 100%;\n height: 100%;\n position: relative;\n top: 0;\n left: 0;\n }\n .lm_transition_indicator {\n display: none;\n width: 20px;\n height: 20px;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 20;\n }\n .lm_popin {\n width: 20px;\n height: 20px;\n position: absolute;\n bottom: 0;\n right: 0;\n z-index: 9999;\n }\n .lm_popin > * {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n }\n .lm_popin > .lm_bg {\n z-index: 10;\n }\n .lm_popin > .lm_icon {\n z-index: 20;\n } /*# sourceMappingURL=goldenlayout-base.css.map */\n`",
292
+ "description": "`ElementStyles` which defines the css for FoundationLayout.",
293
+ "privacy": "public"
294
+ }
295
+ ],
296
+ "exports": [
297
+ {
298
+ "kind": "js",
299
+ "name": "layoutStyles",
300
+ "declaration": {
301
+ "name": "layoutStyles",
302
+ "module": "src/styles/layout.styles.ts"
303
+ }
304
+ }
305
+ ]
306
+ },
307
+ {
308
+ "kind": "javascript-module",
309
+ "path": "src/utils/constants.ts",
310
+ "declarations": [
311
+ {
312
+ "kind": "variable",
313
+ "name": "DEFAULT_RELOAD_BUFFER",
250
314
  "type": {
251
- "text": "object"
315
+ "text": "number"
252
316
  },
253
- "default": "{\n foundationLayout,\n foundationLayoutRegion,\n foundationLayoutItem,\n register(container?: Container, ...rest: any[]) {\n if (!container) {\n // preserve backward compatibility with code that loops through\n // the values of this object and calls them as funcs with no args\n return;\n }\n for (const key in this) {\n if (key === 'register') {\n continue;\n }\n this[key]().register(container, ...rest);\n }\n },\n}",
254
- "description": "Registration object to register the layout with your design system.",
317
+ "default": "500",
318
+ "description": "Default time in milliseconds for the layout to buffer calls to reloading\nthe layout while the declarative API is loading.\n\nDuring the first load of the layout, a loading spinner will be shown.",
255
319
  "privacy": "public"
320
+ },
321
+ {
322
+ "kind": "variable",
323
+ "name": "LAYOUT_POPOUT_CONTROL_KEY",
324
+ "type": {
325
+ "text": "string"
326
+ },
327
+ "default": "'f-layout-key'",
328
+ "description": "Key to be used for controlling popout behaviour"
329
+ },
330
+ {
331
+ "kind": "variable",
332
+ "name": "POPOUT_GEOMETRY_BROADCAST_INTERVAL",
333
+ "type": {
334
+ "text": "number"
335
+ },
336
+ "default": "1000",
337
+ "description": "How often a popout window should check to broadcast its\ngeometry"
338
+ },
339
+ {
340
+ "kind": "variable",
341
+ "name": "LAYOUT_POPOUT_CONTAINER_CLASS",
342
+ "type": {
343
+ "text": "string"
344
+ },
345
+ "default": "'f-layout-popout'",
346
+ "description": "Put this classname on an element which is a DOM parent of the layout, and\nif the layout goes into popout mode then it will place itself as the only child\nfor the popout container you set."
347
+ },
348
+ {
349
+ "kind": "variable",
350
+ "name": "DEFAULT_TAB_HEIGHT",
351
+ "type": {
352
+ "text": "string"
353
+ },
354
+ "default": "'36px'"
355
+ },
356
+ {
357
+ "kind": "function",
358
+ "name": "getLayoutHeaderHeight"
359
+ },
360
+ {
361
+ "kind": "variable",
362
+ "name": "DEFAULT_BORDER_WIDTH",
363
+ "type": {
364
+ "text": "number"
365
+ },
366
+ "default": "0"
367
+ },
368
+ {
369
+ "kind": "function",
370
+ "name": "getItemBorderWidth"
256
371
  }
257
372
  ],
258
373
  "exports": [
259
374
  {
260
375
  "kind": "js",
261
- "name": "foundationLayoutComponents",
376
+ "name": "DEFAULT_RELOAD_BUFFER",
262
377
  "declaration": {
263
- "name": "foundationLayoutComponents",
264
- "module": "src/main/layout-components.ts"
378
+ "name": "DEFAULT_RELOAD_BUFFER",
379
+ "module": "src/utils/constants.ts"
380
+ }
381
+ },
382
+ {
383
+ "kind": "js",
384
+ "name": "LAYOUT_POPOUT_CONTROL_KEY",
385
+ "declaration": {
386
+ "name": "LAYOUT_POPOUT_CONTROL_KEY",
387
+ "module": "src/utils/constants.ts"
388
+ }
389
+ },
390
+ {
391
+ "kind": "js",
392
+ "name": "POPOUT_GEOMETRY_BROADCAST_INTERVAL",
393
+ "declaration": {
394
+ "name": "POPOUT_GEOMETRY_BROADCAST_INTERVAL",
395
+ "module": "src/utils/constants.ts"
396
+ }
397
+ },
398
+ {
399
+ "kind": "js",
400
+ "name": "LAYOUT_POPOUT_CONTAINER_CLASS",
401
+ "declaration": {
402
+ "name": "LAYOUT_POPOUT_CONTAINER_CLASS",
403
+ "module": "src/utils/constants.ts"
404
+ }
405
+ },
406
+ {
407
+ "kind": "js",
408
+ "name": "DEFAULT_TAB_HEIGHT",
409
+ "declaration": {
410
+ "name": "DEFAULT_TAB_HEIGHT",
411
+ "module": "src/utils/constants.ts"
412
+ }
413
+ },
414
+ {
415
+ "kind": "js",
416
+ "name": "getLayoutHeaderHeight",
417
+ "declaration": {
418
+ "name": "getLayoutHeaderHeight",
419
+ "module": "src/utils/constants.ts"
420
+ }
421
+ },
422
+ {
423
+ "kind": "js",
424
+ "name": "DEFAULT_BORDER_WIDTH",
425
+ "declaration": {
426
+ "name": "DEFAULT_BORDER_WIDTH",
427
+ "module": "src/utils/constants.ts"
428
+ }
429
+ },
430
+ {
431
+ "kind": "js",
432
+ "name": "getItemBorderWidth",
433
+ "declaration": {
434
+ "name": "getItemBorderWidth",
435
+ "module": "src/utils/constants.ts"
265
436
  }
266
437
  }
267
438
  ]
268
439
  },
269
440
  {
270
441
  "kind": "javascript-module",
271
- "path": "src/main/layout-item.ts",
442
+ "path": "src/utils/error.ts",
272
443
  "declarations": [
273
444
  {
274
445
  "kind": "class",
275
446
  "description": "",
276
- "name": "FoundationLayoutItem",
277
- "members": [
278
- {
279
- "kind": "field",
280
- "name": "title",
281
- "type": {
282
- "text": "string"
283
- },
284
- "description": "Sets the title of the item which is displayed on the tab.",
285
- "privacy": "public"
286
- },
287
- {
288
- "kind": "field",
289
- "name": "closable",
290
- "type": {
291
- "text": "boolean"
292
- },
293
- "default": "false",
294
- "description": "Boolean attribute controls whether the window can be closed in the GUI.\nDefaults to `false`.",
295
- "privacy": "public"
296
- },
297
- {
298
- "kind": "field",
299
- "name": "size",
300
- "type": {
301
- "text": "string"
302
- },
303
- "description": "optional string describing the size of the new item (see the written documentation for more info)",
304
- "privacy": "public"
305
- },
306
- {
307
- "kind": "field",
308
- "name": "registration",
309
- "type": {
310
- "text": "string"
311
- },
312
- "description": "Sets the registration name for the item, which can be used later to add the item via the JavaScript API using FoundationLayout.addItem.",
313
- "privacy": "public"
314
- },
315
- {
316
- "kind": "field",
317
- "name": "_presentation",
318
- "type": {
319
- "text": "ComponentPresentation | null | undefined"
320
- },
321
- "privacy": "private",
322
- "default": "void 0",
323
- "inheritedFrom": {
324
- "name": "FoundationElement",
325
- "module": "src/foundation-element/foundation-element.ts"
326
- }
327
- },
328
- {
329
- "kind": "field",
330
- "name": "$presentation",
331
- "type": {
332
- "text": "ComponentPresentation | null"
333
- },
334
- "privacy": "public",
335
- "description": "A property which resolves the ComponentPresentation instance\nfor the current component.",
336
- "inheritedFrom": {
337
- "name": "FoundationElement",
338
- "module": "src/foundation-element/foundation-element.ts"
339
- }
340
- },
341
- {
342
- "kind": "field",
343
- "name": "template",
344
- "type": {
345
- "text": "ElementViewTemplate | void | null"
346
- },
347
- "privacy": "public",
348
- "description": "Sets the template of the element instance. When undefined,\nthe element will attempt to resolve the template from\nthe associated presentation or custom element definition.",
349
- "inheritedFrom": {
350
- "name": "FoundationElement",
351
- "module": "src/foundation-element/foundation-element.ts"
352
- }
353
- },
354
- {
355
- "kind": "method",
356
- "name": "templateChanged",
357
- "privacy": "protected",
358
- "return": {
359
- "type": {
360
- "text": "void"
361
- }
362
- },
363
- "inheritedFrom": {
364
- "name": "FoundationElement",
365
- "module": "src/foundation-element/foundation-element.ts"
366
- }
367
- },
368
- {
369
- "kind": "field",
370
- "name": "styles",
371
- "type": {
372
- "text": "ElementStyles | void | null"
373
- },
374
- "privacy": "public",
375
- "description": "Sets the default styles for the element instance. When undefined,\nthe element will attempt to resolve default styles from\nthe associated presentation or custom element definition.",
376
- "inheritedFrom": {
377
- "name": "FoundationElement",
378
- "module": "src/foundation-element/foundation-element.ts"
379
- }
380
- },
381
- {
382
- "kind": "method",
383
- "name": "stylesChanged",
384
- "privacy": "protected",
385
- "return": {
386
- "type": {
387
- "text": "void"
388
- }
389
- },
390
- "inheritedFrom": {
391
- "name": "FoundationElement",
392
- "module": "src/foundation-element/foundation-element.ts"
393
- }
394
- },
395
- {
396
- "kind": "method",
397
- "name": "compose",
398
- "privacy": "public",
399
- "static": true,
400
- "return": {
401
- "type": {
402
- "text": "(\n overrideDefinition?: OverrideFoundationElementDefinition<T>\n ) => FoundationElementRegistry<T, K>"
403
- }
404
- },
405
- "parameters": [
406
- {
407
- "name": "this",
408
- "type": {
409
- "text": "K"
410
- }
411
- },
412
- {
413
- "name": "elementDefinition",
414
- "type": {
415
- "text": "T"
416
- },
417
- "description": "The definition of the element to create the registry\nfunction for."
418
- }
419
- ],
420
- "description": "Defines an element registry function with a set of element definition defaults.",
421
- "inheritedFrom": {
422
- "name": "FoundationElement",
423
- "module": "src/foundation-element/foundation-element.ts"
424
- }
425
- }
426
- ],
427
- "attributes": [
428
- {
429
- "name": "title",
430
- "type": {
431
- "text": "string"
432
- },
433
- "description": "Sets the title of the item which is displayed on the tab.",
434
- "fieldName": "title"
435
- },
436
- {
437
- "type": {
438
- "text": "boolean"
439
- },
440
- "default": "false",
441
- "description": "Boolean attribute controls whether the window can be closed in the GUI.\nDefaults to `false`.",
442
- "fieldName": "closable"
443
- },
444
- {
445
- "name": "size",
446
- "type": {
447
- "text": "string"
448
- },
449
- "description": "optional string describing the size of the new item (see the written documentation for more info)",
450
- "fieldName": "size"
451
- },
452
- {
453
- "name": "registration",
454
- "type": {
455
- "text": "string"
456
- },
457
- "description": "Sets the registration name for the item, which can be used later to add the item via the JavaScript API using FoundationLayout.addItem.",
458
- "fieldName": "registration"
459
- }
460
- ],
447
+ "name": "LayoutUsageError",
461
448
  "superclass": {
462
- "name": "FoundationElement",
463
- "package": "@microsoft/fast-foundation"
449
+ "name": "Error",
450
+ "module": "src/utils/error.ts"
451
+ }
452
+ },
453
+ {
454
+ "kind": "class",
455
+ "description": "",
456
+ "name": "LayoutRegistrationError",
457
+ "superclass": {
458
+ "name": "Error",
459
+ "module": "src/utils/error.ts"
460
+ }
461
+ }
462
+ ],
463
+ "exports": [
464
+ {
465
+ "kind": "js",
466
+ "name": "LayoutUsageError",
467
+ "declaration": {
468
+ "name": "LayoutUsageError",
469
+ "module": "src/utils/error.ts"
470
+ }
471
+ },
472
+ {
473
+ "kind": "js",
474
+ "name": "LayoutRegistrationError",
475
+ "declaration": {
476
+ "name": "LayoutRegistrationError",
477
+ "module": "src/utils/error.ts"
478
+ }
479
+ }
480
+ ]
481
+ },
482
+ {
483
+ "kind": "javascript-module",
484
+ "path": "src/utils/events.ts",
485
+ "declarations": [
486
+ {
487
+ "kind": "variable",
488
+ "name": "LayoutEmitEvents",
489
+ "type": {
490
+ "text": "{\n firstLoaded: 'first-loaded',\n itemAdded: 'item-added',\n itemRemoved: 'item-removed',\n itemResized: 'item-resized',\n stateChanged: 'state-changed',\n}"
464
491
  },
465
- "tagName": "%%prefix%%-layout-item",
466
- "customElement": true
492
+ "default": "{\n firstLoaded: 'first-loaded',\n itemAdded: 'item-added',\n itemRemoved: 'item-removed',\n itemResized: 'item-resized',\n stateChanged: 'state-changed',\n}",
493
+ "description": "Defines events that the layout system emits\n\n'firstLoaded' - emitted when the layout has finished loading the first time\nusing the declarative API after DEFAULT_RELOAD_BUFFER ms.\n<br/>\n'itemAdded' - emitted when an item is added to the layout'\n<br/>\n'itemRemoved' - emitted when an item is removed from the layout'\n<br/>\n'itemResized' - emitted when the user drags the divider to resize elements\n<br/>\n'stateChanged' - emitted on every persisted layout change. This is the broadest\nevent: it fires wherever the layout caches/saves its state, which includes item\nadd/remove/resize but ALSO the changes the granular events miss — dragging a pane\nto a new position, loading a whole layout via FoundationLayout.loadLayout,\nreverting to the default, and contained-item autosave requests. Prefer this when\nyou need to mirror the layout to your own store and must not miss any change.",
494
+ "privacy": "public"
495
+ },
496
+ {
497
+ "kind": "variable",
498
+ "name": "LayoutReceiveEvents",
499
+ "type": {
500
+ "text": "{\n changeTitle: 'change-title',\n autosave: 'autosave',\n}"
501
+ },
502
+ "default": "{\n changeTitle: 'change-title',\n autosave: 'autosave',\n}",
503
+ "description": "Defines events that the layout system listens for\n\n'changeTitle' - emit this from a contained item to update the title of the window that contains it.\n'autosave' - emit this from a contained item to hint to the layout system that it should autosave the layout. A contained item should do this if it has just changed some state it would like to persist. See LayoutComponentWithState.",
504
+ "privacy": "public"
467
505
  }
468
506
  ],
469
507
  "exports": [
470
508
  {
471
509
  "kind": "js",
472
- "name": "FoundationLayoutItem",
510
+ "name": "LayoutEmitEvents",
473
511
  "declaration": {
474
- "name": "FoundationLayoutItem",
475
- "module": "src/main/layout-item.ts"
512
+ "name": "LayoutEmitEvents",
513
+ "module": "src/utils/events.ts"
514
+ }
515
+ },
516
+ {
517
+ "kind": "js",
518
+ "name": "LayoutReceiveEvents",
519
+ "declaration": {
520
+ "name": "LayoutReceiveEvents",
521
+ "module": "src/utils/events.ts"
476
522
  }
477
523
  }
478
524
  ]
479
525
  },
480
526
  {
481
527
  "kind": "javascript-module",
482
- "path": "src/main/layout-main.ts",
528
+ "path": "src/utils/factory-registry.ts",
483
529
  "declarations": [
484
530
  {
485
- "kind": "class",
486
- "description": "",
487
- "name": "FoundationLayout",
488
- "members": [
531
+ "kind": "function",
532
+ "name": "registerFactory",
533
+ "return": {
534
+ "type": {
535
+ "text": "void"
536
+ }
537
+ },
538
+ "parameters": [
489
539
  {
490
- "kind": "field",
491
- "name": "layout",
540
+ "name": "key",
492
541
  "type": {
493
- "text": "GoldenLayout"
542
+ "text": "string"
494
543
  },
495
- "privacy": "private"
544
+ "description": "Unique identifier for the factory. Should be descriptive and unique across the application."
496
545
  },
497
546
  {
498
- "kind": "field",
499
- "name": "layoutConfig",
547
+ "name": "factory",
500
548
  "type": {
501
- "text": "LayoutConfig"
502
- },
503
- "privacy": "private",
504
- "default": "{ root: undefined }"
505
- },
506
- {
507
- "kind": "field",
508
- "name": "defaultLayoutConfig",
509
- "type": {
510
- "text": "LayoutConfig"
511
- },
512
- "privacy": "private",
513
- "default": "{ root: undefined }"
514
- },
515
- {
516
- "kind": "field",
517
- "name": "reloadBuffer",
518
- "type": {
519
- "text": "number"
520
- },
521
- "default": "DEFAULT_RELOAD_BUFFER",
522
- "description": "Number describing how long to wait in ms before reloading the config when adding items\ndeclaratively by the html API. Default 500 (ms).",
523
- "privacy": "public"
524
- },
525
- {
526
- "kind": "field",
527
- "name": "reloadPending",
528
- "type": {
529
- "text": "boolean"
530
- },
531
- "privacy": "private",
532
- "default": "false"
533
- },
534
- {
535
- "kind": "field",
536
- "name": "registeredComponents",
537
- "type": {
538
- "text": "number"
539
- },
540
- "privacy": "private",
541
- "default": "0"
542
- },
543
- {
544
- "kind": "field",
545
- "name": "autoSaveKey",
546
- "type": {
547
- "text": "string | undefined"
548
- },
549
- "description": "Attribute which if set will auto save and load the layout as the user changes it.\nOmit this attribute to disable this feature.\nSet attribute using `auto-save-key`.",
550
- "privacy": "public"
551
- },
552
- {
553
- "kind": "field",
554
- "name": "missingItemPlaceholder",
555
- "description": "Function which is used to generate the placeholder text when a layout is loaded\nwith a missing item.",
556
- "privacy": "public"
557
- },
558
- {
559
- "kind": "field",
560
- "name": "dimensionsConfig",
561
- "type": {
562
- "text": "LayoutConfig.Dimensions | undefined"
563
- },
564
- "description": "Apply dimensions config to the layout, such as setting the size of the drag handles.",
565
- "privacy": "public"
566
- },
567
- {
568
- "kind": "field",
569
- "name": "hasFirstLoaded",
570
- "type": {
571
- "text": "boolean"
572
- },
573
- "default": "false",
574
- "description": "Boolean signifies whether the layout has loaded for the first time or not.",
575
- "privacy": "public"
576
- },
577
- {
578
- "kind": "field",
579
- "name": "customButtons",
580
- "type": {
581
- "text": "CustomButton[]"
582
- },
583
- "default": "[]",
584
- "description": "Set custom button definition on this property to add them to the layout header controls",
585
- "privacy": "public"
586
- },
587
- {
588
- "kind": "field",
589
- "name": "dragging",
590
- "type": {
591
- "text": "boolean"
549
+ "text": "ComponentFactory"
592
550
  },
593
- "default": "false",
594
- "privacy": "public"
595
- },
596
- {
597
- "kind": "field",
598
- "name": "class",
599
- "privacy": "public",
600
- "default": "'FoundationLayoutMain'",
601
- "type": {
602
- "text": "'FoundationLayoutMain'"
603
- }
604
- },
551
+ "description": "The factory function that creates the component."
552
+ }
553
+ ],
554
+ "description": "Registers a factory function with a unique key.\nThis allows framework components to be used in the declarative layout API\nwithout needing to pass function references through HTML attributes.",
555
+ "privacy": "public"
556
+ },
557
+ {
558
+ "kind": "function",
559
+ "name": "getFactory",
560
+ "return": {
561
+ "type": {
562
+ "text": ""
563
+ }
564
+ },
565
+ "parameters": [
605
566
  {
606
- "kind": "field",
607
- "name": "lifecycleUpdateToken",
567
+ "name": "key",
608
568
  "type": {
609
- "text": "string | undefined"
569
+ "text": "string"
610
570
  },
611
- "privacy": "public",
612
- "default": "undefined",
613
- "description": "Used to calculate whether a layout item should run its lifecycle methods or not"
614
- },
571
+ "description": "The unique identifier for the factory."
572
+ }
573
+ ],
574
+ "description": "Retrieves a factory function by its key.",
575
+ "privacy": "public"
576
+ },
577
+ {
578
+ "kind": "function",
579
+ "name": "unregisterFactory",
580
+ "return": {
581
+ "type": {
582
+ "text": ""
583
+ }
584
+ },
585
+ "parameters": [
615
586
  {
616
- "kind": "field",
617
- "name": "popoutConfig",
587
+ "name": "key",
618
588
  "type": {
619
- "text": "LayoutPopoutConfig | undefined"
620
- },
621
- "default": "undefined",
622
- "description": "Controls whether popout functionality is enabled on the layout. Defaults to disabled.\nPass an empty object `{}` to use default configurations, or a LayoutPopoutConfig object to further customise."
623
- },
624
- {
625
- "kind": "method",
626
- "name": "layoutRequiredRegistrations",
627
- "static": true,
628
- "return": {
629
- "type": {
630
- "text": ""
631
- }
632
- },
633
- "parameters": [
634
- {
635
- "name": "layout",
636
- "type": {
637
- "text": "SerialisedLayout"
638
- },
639
- "description": "any version of {@link SerialisedLayout}object describing the layout\n * "
640
- }
641
- ],
642
- "description": "JS API, public",
643
- "privacy": "public"
644
- },
645
- {
646
- "kind": "method",
647
- "name": "registeredItems",
648
- "return": {
649
- "type": {
650
- "text": ""
651
- }
652
- },
653
- "privacy": "public"
654
- },
655
- {
656
- "kind": "method",
657
- "name": "getLayout",
658
- "return": {
659
- "type": {
660
- "text": ""
661
- }
662
- },
663
- "privacy": "public"
664
- },
665
- {
666
- "kind": "method",
667
- "name": "tryActivatePopoutMode",
668
- "return": {
669
- "type": {
670
- "text": "boolean"
671
- }
672
- },
673
- "description": "If in a popout window from the dynamic layout, this function will run the flow to put the component in popout mode.\nThis function is automatically called if using the declarative HTML API, but if only using the JavaScript API then you will need to call this function manually."
674
- },
675
- {
676
- "kind": "method",
677
- "name": "tryLoadLayoutFromLocalStorage",
678
- "return": {
679
- "type": {
680
- "text": ""
681
- }
682
- },
683
- "description": "Try to load a layout from local storage, or return false. Only required if manually calling FoundationLayout.registerItem",
684
- "privacy": "public"
685
- },
686
- {
687
- "kind": "method",
688
- "name": "clearAutosaveAndRevertToDefault",
689
- "return": {
690
- "type": {
691
- "text": ""
692
- }
589
+ "text": "string"
693
590
  },
694
- "privacy": "public"
695
- },
696
- {
697
- "kind": "method",
698
- "name": "loadLayout",
699
- "parameters": [
700
- {
701
- "name": "layout",
702
- "type": {
703
- "text": "SerialisedLayout"
704
- },
705
- "description": "any version of {@link SerialisedLayout}object describing the layout\n * "
706
- },
707
- {
708
- "name": "handleMissingItem",
709
- "default": "'error'",
710
- "type": {
711
- "text": "'placeholder' | 'error'"
712
- },
713
- "description": "what to do if the layout contains items that are not currently registered with the layout system. Defaults to 'error' which will throw an error. If set to 'placeholder' then any missing items will be replaced with a placeholder element. You can control the text of the placeholder element with {@link FoundationLayout.missingItemPlaceholder}.\n * "
714
- },
715
- {
716
- "name": "disableCache",
717
- "default": "false",
718
- "type": {
719
- "text": "boolean"
720
- },
721
- "description": "if set to true then the layout will give you a new instance of every item, even if it has a currently cached item to use. Using this will not stop you from saving and loading state via the {@link LayoutComponentWithState}interface. Defaults to false.\n * "
722
- }
723
- ],
724
- "privacy": "public"
725
- },
726
- {
727
- "kind": "method",
728
- "name": "addItem",
729
- "parameters": [
730
- {
731
- "name": "config",
732
- "type": {
733
- "text": "RegisteredElementConfig | RegisteredElementConfig[]"
734
- },
735
- "description": "{@link RegisteredElementConfig}configuration items for the new items(s). Pass an array of {@link RegisteredElementConfig}to add multiple items at once.\n * "
736
- },
737
- {
738
- "name": "placement",
739
- "default": "defaultAddItemPlacement",
740
- "type": {
741
- "text": "Placement"
742
- },
743
- "description": "where and how to add the new items to the layout. For more info and defaults see {@link Placement}.\n * "
744
- }
745
- ],
746
- "privacy": "public"
747
- },
748
- {
749
- "kind": "method",
750
- "name": "removeItems",
751
- "return": {
752
- "type": {
753
- "text": ""
754
- }
755
- },
756
- "parameters": [
757
- {
758
- "name": "registration",
759
- "type": {
760
- "text": "string"
761
- },
762
- "description": "string of the registration ID"
763
- },
764
- {
765
- "name": "force",
766
- "default": "false",
767
- "type": {
768
- "text": "boolean"
769
- },
770
- "description": "if set to true then the item will be removed even if it is not closable. Defaults to false, which is the same behaviour as the close button on the header."
771
- }
772
- ],
773
- "privacy": "public"
774
- },
775
- {
776
- "kind": "method",
777
- "name": "registerItem",
778
- "return": {
779
- "type": {
780
- "text": ""
781
- }
782
- },
783
- "parameters": [
784
- {
785
- "name": "registration",
786
- "type": {
787
- "text": "string"
788
- },
789
- "description": "string of the registration ID"
790
- },
791
- {
792
- "name": "elementsOrFactory",
793
- "type": {
794
- "text": "Element[] | ComponentFactory"
795
- },
796
- "description": "Either Elements[] containing the reference to the elements to register, or a ComponentFactory function"
797
- }
798
- ],
799
- "privacy": "public"
800
- },
801
- {
802
- "kind": "method",
803
- "name": "updateLifecycleToken",
804
- "privacy": "private",
805
- "return": {
806
- "type": {
807
- "text": "void"
808
- }
809
- },
810
- "description": "The `LifecycleMixin` can use the lifecycleUpdateToken to determine if it needs to gate\nlifecycle methods from running when other items have been added or deleted.\nThis key is updated every time one of these actions are performed, so you can check if the key has changed and know you potentially need to gate some of your lifecycle functionality.\nThis method should be called whenever we are about to perform an action which will cause a lifecycle update, should as adding or removing an item from the layout"
811
- },
812
- {
813
- "kind": "method",
814
- "name": "handleGLRunErrors",
815
- "privacy": "private",
816
- "parameters": [
817
- {
818
- "name": "e",
819
- "type": {
820
- "text": "Error"
821
- }
822
- }
823
- ],
824
- "description": "For specific golden layout errors we can provide better information to the caller. Else re-throw the original error"
825
- },
826
- {
827
- "kind": "field",
828
- "name": "_presentation",
829
- "type": {
830
- "text": "ComponentPresentation | null | undefined"
831
- },
832
- "privacy": "private",
833
- "default": "void 0",
834
- "inheritedFrom": {
835
- "name": "FoundationElement",
836
- "module": "src/foundation-element/foundation-element.ts"
837
- }
838
- },
839
- {
840
- "kind": "field",
841
- "name": "$presentation",
842
- "type": {
843
- "text": "ComponentPresentation | null"
844
- },
845
- "privacy": "public",
846
- "description": "A property which resolves the ComponentPresentation instance\nfor the current component.",
847
- "inheritedFrom": {
848
- "name": "FoundationElement",
849
- "module": "src/foundation-element/foundation-element.ts"
850
- }
851
- },
852
- {
853
- "kind": "field",
854
- "name": "template",
855
- "type": {
856
- "text": "ElementViewTemplate | void | null"
857
- },
858
- "privacy": "public",
859
- "description": "Sets the template of the element instance. When undefined,\nthe element will attempt to resolve the template from\nthe associated presentation or custom element definition.",
860
- "inheritedFrom": {
861
- "name": "FoundationElement",
862
- "module": "src/foundation-element/foundation-element.ts"
863
- }
864
- },
865
- {
866
- "kind": "method",
867
- "name": "templateChanged",
868
- "privacy": "protected",
869
- "return": {
870
- "type": {
871
- "text": "void"
872
- }
873
- },
874
- "inheritedFrom": {
875
- "name": "FoundationElement",
876
- "module": "src/foundation-element/foundation-element.ts"
877
- }
878
- },
879
- {
880
- "kind": "field",
881
- "name": "styles",
882
- "type": {
883
- "text": "ElementStyles | void | null"
884
- },
885
- "privacy": "public",
886
- "description": "Sets the default styles for the element instance. When undefined,\nthe element will attempt to resolve default styles from\nthe associated presentation or custom element definition.",
887
- "inheritedFrom": {
888
- "name": "FoundationElement",
889
- "module": "src/foundation-element/foundation-element.ts"
890
- }
891
- },
892
- {
893
- "kind": "method",
894
- "name": "stylesChanged",
895
- "privacy": "protected",
896
- "return": {
897
- "type": {
898
- "text": "void"
899
- }
900
- },
901
- "inheritedFrom": {
902
- "name": "FoundationElement",
903
- "module": "src/foundation-element/foundation-element.ts"
904
- }
905
- },
906
- {
907
- "kind": "method",
908
- "name": "compose",
909
- "privacy": "public",
910
- "static": true,
911
- "return": {
912
- "type": {
913
- "text": "(\n overrideDefinition?: OverrideFoundationElementDefinition<T>\n ) => FoundationElementRegistry<T, K>"
914
- }
915
- },
916
- "parameters": [
917
- {
918
- "name": "this",
919
- "type": {
920
- "text": "K"
921
- }
922
- },
923
- {
924
- "name": "elementDefinition",
925
- "type": {
926
- "text": "T"
927
- },
928
- "description": "The definition of the element to create the registry\nfunction for."
929
- }
930
- ],
931
- "description": "Defines an element registry function with a set of element definition defaults.",
932
- "inheritedFrom": {
933
- "name": "FoundationElement",
934
- "module": "src/foundation-element/foundation-element.ts"
935
- }
936
- }
937
- ],
938
- "events": [
939
- {
940
- "description": "emitted when the layout has finished loading the first time",
941
- "name": "first-loaded"
942
- },
943
- {
944
- "description": "emitted when an item is added to the layout",
945
- "name": "item-added"
946
- },
947
- {
948
- "description": "emitted when an item is removed from the layout",
949
- "name": "item-removed"
950
- },
951
- {
952
- "description": "emitted when the user drags the divider to resize elements",
953
- "name": "item-resized"
954
- },
955
- {
956
- "description": "emitted on every persisted layout change (add/remove/resize, drag-move, loadLayout, revert-to-default, autosave request); use this to mirror the layout without missing any change",
957
- "name": "state-changed"
958
- }
959
- ],
960
- "attributes": [
961
- {
962
- "name": "reload-buffer",
963
- "type": {
964
- "text": "number"
965
- },
966
- "default": "DEFAULT_RELOAD_BUFFER",
967
- "description": "Number describing how long to wait in ms before reloading the config when adding items\ndeclaratively by the html API. Default 500 (ms).",
968
- "resolveInitializer": {
969
- "module": "/src/utils"
970
- },
971
- "fieldName": "reloadBuffer"
972
- },
973
- {
974
- "name": "auto-save-key",
975
- "type": {
976
- "text": "string | undefined"
977
- },
978
- "description": "Attribute which if set will auto save and load the layout as the user changes it.\nOmit this attribute to disable this feature.\nSet attribute using `auto-save-key`.",
979
- "fieldName": "autoSaveKey"
591
+ "description": "The unique identifier for the factory to remove."
980
592
  }
981
593
  ],
982
- "superclass": {
983
- "name": "FoundationElement",
984
- "package": "@microsoft/fast-foundation"
985
- },
986
- "tagName": "%%prefix%%-layout",
987
- "customElement": true
594
+ "description": "Removes a factory from the registry.\nThis is useful for cleanup when a component is unmounted or no longer needed.",
595
+ "privacy": "public"
596
+ }
597
+ ],
598
+ "exports": [
599
+ {
600
+ "kind": "js",
601
+ "name": "registerFactory",
602
+ "declaration": {
603
+ "name": "registerFactory",
604
+ "module": "src/utils/factory-registry.ts"
605
+ }
606
+ },
607
+ {
608
+ "kind": "js",
609
+ "name": "getFactory",
610
+ "declaration": {
611
+ "name": "getFactory",
612
+ "module": "src/utils/factory-registry.ts"
613
+ }
614
+ },
615
+ {
616
+ "kind": "js",
617
+ "name": "unregisterFactory",
618
+ "declaration": {
619
+ "name": "unregisterFactory",
620
+ "module": "src/utils/factory-registry.ts"
621
+ }
622
+ }
623
+ ]
624
+ },
625
+ {
626
+ "kind": "javascript-module",
627
+ "path": "src/utils/index.ts",
628
+ "declarations": [],
629
+ "exports": [
630
+ {
631
+ "kind": "js",
632
+ "name": "*",
633
+ "declaration": {
634
+ "name": "*",
635
+ "package": "./constants"
636
+ }
637
+ },
638
+ {
639
+ "kind": "js",
640
+ "name": "*",
641
+ "declaration": {
642
+ "name": "*",
643
+ "package": "./error"
644
+ }
645
+ },
646
+ {
647
+ "kind": "js",
648
+ "name": "*",
649
+ "declaration": {
650
+ "name": "*",
651
+ "package": "./events"
652
+ }
653
+ },
654
+ {
655
+ "kind": "js",
656
+ "name": "*",
657
+ "declaration": {
658
+ "name": "*",
659
+ "package": "./factory-registry"
660
+ }
661
+ },
662
+ {
663
+ "kind": "js",
664
+ "name": "*",
665
+ "declaration": {
666
+ "name": "*",
667
+ "package": "./misc"
668
+ }
988
669
  },
670
+ {
671
+ "kind": "js",
672
+ "name": "*",
673
+ "declaration": {
674
+ "name": "*",
675
+ "package": "./templates"
676
+ }
677
+ },
678
+ {
679
+ "kind": "js",
680
+ "name": "*",
681
+ "declaration": {
682
+ "name": "*",
683
+ "package": "./popout-events"
684
+ }
685
+ },
686
+ {
687
+ "kind": "js",
688
+ "name": "*",
689
+ "declaration": {
690
+ "name": "*",
691
+ "package": "./types"
692
+ }
693
+ },
694
+ {
695
+ "kind": "js",
696
+ "name": "*",
697
+ "declaration": {
698
+ "name": "*",
699
+ "package": "./error"
700
+ }
701
+ }
702
+ ]
703
+ },
704
+ {
705
+ "kind": "javascript-module",
706
+ "path": "src/utils/logger.ts",
707
+ "declarations": [
989
708
  {
990
709
  "kind": "variable",
991
- "name": "layoutTemplate",
992
- "default": "html<FoundationLayout>`\n <template>\n ${when(\n (x) => Boolean(x.popoutConfig),\n html<FoundationLayout>`\n <foundation-layout-popout-controller\n ${ref('popoutController')}\n :parentLayout=\"${(x) => x}\"\n channel-name=\"${(x) => x.popoutConfig?.channelName}\"\n ></foundation-layout-popout-controller>\n `,\n )}\n ${when((x) => !x.hasFirstLoaded && x.usingDeclerativeAPI, loadingTemplate)}\n <div class=\"layout-container\" ${ref('layoutElement')}></div>\n </template>\n`",
993
- "description": "`ViewTemplate` which defines the html for FoundationLayout.",
710
+ "name": "logger"
711
+ }
712
+ ],
713
+ "exports": [
714
+ {
715
+ "kind": "js",
716
+ "name": "logger",
717
+ "declaration": {
718
+ "name": "logger",
719
+ "module": "src/utils/logger.ts"
720
+ }
721
+ }
722
+ ]
723
+ },
724
+ {
725
+ "kind": "javascript-module",
726
+ "path": "src/utils/misc.ts",
727
+ "declarations": [],
728
+ "exports": []
729
+ },
730
+ {
731
+ "kind": "javascript-module",
732
+ "path": "src/utils/popout-events.ts",
733
+ "declarations": [
734
+ {
735
+ "kind": "variable",
736
+ "name": "LAYOUT_POPOUT_CHANNEL_NAME",
737
+ "type": {
738
+ "text": "string"
739
+ },
740
+ "default": "'f-layout-popout-channel'",
741
+ "description": "Name of the default broadcast channel used for layout popouts",
994
742
  "privacy": "public"
995
743
  }
996
744
  ],
997
745
  "exports": [
998
746
  {
999
747
  "kind": "js",
1000
- "name": "layoutStyles",
748
+ "name": "LAYOUT_POPOUT_CHANNEL_NAME",
749
+ "declaration": {
750
+ "name": "LAYOUT_POPOUT_CHANNEL_NAME",
751
+ "module": "src/utils/popout-events.ts"
752
+ }
753
+ },
754
+ {
755
+ "kind": "js",
756
+ "name": "PopoutGeometry",
757
+ "declaration": {
758
+ "name": "PopoutGeometry",
759
+ "module": "src/utils/popout-events.ts"
760
+ }
761
+ }
762
+ ]
763
+ },
764
+ {
765
+ "kind": "javascript-module",
766
+ "path": "src/utils/templates.ts",
767
+ "declarations": [],
768
+ "exports": []
769
+ },
770
+ {
771
+ "kind": "javascript-module",
772
+ "path": "src/utils/types.ts",
773
+ "declarations": [],
774
+ "exports": []
775
+ },
776
+ {
777
+ "kind": "javascript-module",
778
+ "path": "src/main/index.ts",
779
+ "declarations": [],
780
+ "exports": [
781
+ {
782
+ "kind": "js",
783
+ "name": "FoundationLayoutItem",
784
+ "declaration": {
785
+ "name": "FoundationLayoutItem",
786
+ "module": "./layout-item"
787
+ }
788
+ },
789
+ {
790
+ "kind": "js",
791
+ "name": "FoundationLayoutRegion",
1001
792
  "declaration": {
1002
- "name": "layoutStyles",
1003
- "module": "../styles"
793
+ "name": "FoundationLayoutRegion",
794
+ "module": "./layout-region"
1004
795
  }
1005
796
  },
1006
797
  {
@@ -1008,7 +799,15 @@
1008
799
  "name": "FoundationLayout",
1009
800
  "declaration": {
1010
801
  "name": "FoundationLayout",
1011
- "module": "src/main/layout-main.ts"
802
+ "module": "./layout-main"
803
+ }
804
+ },
805
+ {
806
+ "kind": "js",
807
+ "name": "layoutStyles",
808
+ "declaration": {
809
+ "name": "layoutStyles",
810
+ "module": "./layout-main"
1012
811
  }
1013
812
  },
1014
813
  {
@@ -1016,276 +815,73 @@
1016
815
  "name": "layoutTemplate",
1017
816
  "declaration": {
1018
817
  "name": "layoutTemplate",
1019
- "module": "src/main/layout-main.ts"
818
+ "module": "./layout-main"
1020
819
  }
1021
- }
1022
- ]
1023
- },
1024
- {
1025
- "kind": "javascript-module",
1026
- "path": "src/main/layout-popout-controller.ts",
1027
- "declarations": [
1028
- {
1029
- "kind": "class",
1030
- "description": "",
1031
- "name": "FoundationLayoutPopoutController",
1032
- "members": [
1033
- {
1034
- "kind": "field",
1035
- "name": "channelName",
1036
- "type": {
1037
- "text": "string"
1038
- }
1039
- },
1040
- {
1041
- "kind": "field",
1042
- "name": "layoutKey",
1043
- "type": {
1044
- "text": "string"
1045
- },
1046
- "privacy": "private"
1047
- },
1048
- {
1049
- "kind": "field",
1050
- "name": "channel",
1051
- "type": {
1052
- "text": "TypedBroadcastChannel<LayoutPopoutEvents>"
1053
- },
1054
- "privacy": "private"
1055
- },
1056
- {
1057
- "kind": "field",
1058
- "name": "pollInterval",
1059
- "type": {
1060
- "text": "any"
1061
- },
1062
- "privacy": "private"
1063
- },
1064
- {
1065
- "kind": "field",
1066
- "name": "unloadHandler",
1067
- "type": {
1068
- "text": "() => void"
1069
- },
1070
- "privacy": "private"
1071
- },
1072
- {
1073
- "kind": "field",
1074
- "name": "lastUpdate",
1075
- "type": {
1076
- "text": "string"
1077
- },
1078
- "privacy": "private"
1079
- },
1080
- {
1081
- "kind": "field",
1082
- "name": "popoutRegistry",
1083
- "type": {
1084
- "text": "Map<\n string,\n { geometry: PopoutGeometry; state?: unknown; window?: Window }\n >"
1085
- },
1086
- "privacy": "private",
1087
- "default": "new Map()"
1088
- },
1089
- {
1090
- "kind": "method",
1091
- "name": "setupChannel",
1092
- "privacy": "private"
1093
- },
1094
- {
1095
- "kind": "method",
1096
- "name": "setupListener",
1097
- "privacy": "private"
1098
- },
1099
- {
1100
- "kind": "method",
1101
- "name": "applyStateToParent",
1102
- "privacy": "private",
1103
- "parameters": [
1104
- {
1105
- "name": "state",
1106
- "type": {
1107
- "text": "unknown"
1108
- }
1109
- }
1110
- ]
1111
- },
1112
- {
1113
- "kind": "method",
1114
- "name": "setupUnloadListener",
1115
- "privacy": "private"
1116
- },
1117
- {
1118
- "kind": "method",
1119
- "name": "teardownUnloadListener",
1120
- "privacy": "private"
1121
- },
1122
- {
1123
- "kind": "method",
1124
- "name": "emitAutosave",
1125
- "privacy": "private"
1126
- },
1127
- {
1128
- "kind": "method",
1129
- "name": "startPolling",
1130
- "privacy": "private"
1131
- },
1132
- {
1133
- "kind": "method",
1134
- "name": "stopPolling",
1135
- "privacy": "private"
1136
- },
1137
- {
1138
- "kind": "method",
1139
- "name": "getGeometry",
1140
- "privacy": "private",
1141
- "return": {
1142
- "type": {
1143
- "text": "Promise<PopoutGeometry>"
1144
- }
1145
- }
1146
- },
1147
- {
1148
- "kind": "method",
1149
- "name": "getComponentState",
1150
- "privacy": "private",
1151
- "return": {
1152
- "type": {
1153
- "text": "unknown"
1154
- }
1155
- }
1156
- },
1157
- {
1158
- "kind": "method",
1159
- "name": "broadcastUpdate",
1160
- "privacy": "private",
1161
- "parameters": [
1162
- {
1163
- "name": "geometry",
1164
- "type": {
1165
- "text": "PopoutGeometry"
1166
- }
1167
- },
1168
- {
1169
- "name": "state",
1170
- "optional": true,
1171
- "type": {
1172
- "text": "unknown"
1173
- }
1174
- }
1175
- ]
1176
- },
1177
- {
1178
- "kind": "method",
1179
- "name": "openPopout",
1180
- "privacy": "public",
1181
- "parameters": [
1182
- {
1183
- "name": "registration",
1184
- "type": {
1185
- "text": "string"
1186
- },
1187
- "description": "The registration ID of the component to pop out."
1188
- },
1189
- {
1190
- "name": "popoutState",
1191
- "optional": true,
1192
- "type": {
1193
- "text": "PopoutState"
1194
- },
1195
- "description": "Optional state (geometry and component state) to use for the new window."
1196
- },
1197
- {
1198
- "name": "uuid",
1199
- "optional": true,
1200
- "type": {
1201
- "text": "any"
1202
- },
1203
- "description": "UUID generator from parent layout"
1204
- }
1205
- ],
1206
- "description": "Opens a component in a popout window."
1207
- },
1208
- {
1209
- "kind": "method",
1210
- "name": "getRegistry",
1211
- "privacy": "public",
1212
- "return": {
1213
- "type": {
1214
- "text": "{ [layoutKey: string]: PopoutState }"
1215
- }
1216
- }
1217
- },
1218
- {
1219
- "kind": "method",
1220
- "name": "restorePopouts",
1221
- "privacy": "public",
1222
- "parameters": [
1223
- {
1224
- "name": "registry",
1225
- "type": {
1226
- "text": "{ [layoutKey: string]: PopoutState }"
1227
- }
1228
- },
1229
- {
1230
- "name": "uuid",
1231
- "type": {
1232
- "text": "any"
1233
- }
1234
- }
1235
- ],
1236
- "description": "Restores popouts from a registry"
1237
- },
1238
- {
1239
- "kind": "method",
1240
- "name": "closeAllPopouts",
1241
- "privacy": "public"
1242
- }
1243
- ],
1244
- "attributes": [
1245
- {
1246
- "name": "channel-name",
1247
- "type": {
1248
- "text": "string"
1249
- },
1250
- "fieldName": "channelName"
1251
- }
1252
- ],
1253
- "superclass": {
1254
- "name": "FASTElement",
1255
- "package": "@microsoft/fast-element"
820
+ },
821
+ {
822
+ "kind": "js",
823
+ "name": "*",
824
+ "declaration": {
825
+ "name": "*",
826
+ "package": "./layout-components"
827
+ }
828
+ }
829
+ ]
830
+ },
831
+ {
832
+ "kind": "javascript-module",
833
+ "path": "src/main/layout-components.ts",
834
+ "declarations": [
835
+ {
836
+ "kind": "variable",
837
+ "name": "foundationLayoutComponents",
838
+ "type": {
839
+ "text": "object"
1256
840
  },
1257
- "tagName": "foundation-layout-popout-controller",
1258
- "customElement": true
841
+ "default": "{\n foundationLayout,\n foundationLayoutRegion,\n foundationLayoutItem,\n register(container?: Container, ...rest: any[]) {\n if (!container) {\n // preserve backward compatibility with code that loops through\n // the values of this object and calls them as funcs with no args\n return;\n }\n for (const key in this) {\n if (key === 'register') {\n continue;\n }\n this[key]().register(container, ...rest);\n }\n },\n}",
842
+ "description": "Registration object to register the layout with your design system.",
843
+ "privacy": "public"
1259
844
  }
1260
845
  ],
1261
846
  "exports": [
1262
847
  {
1263
848
  "kind": "js",
1264
- "name": "FoundationLayoutPopoutController",
1265
- "declaration": {
1266
- "name": "FoundationLayoutPopoutController",
1267
- "module": "src/main/layout-popout-controller.ts"
1268
- }
1269
- },
1270
- {
1271
- "kind": "custom-element-definition",
1272
- "name": "foundation-layout-popout-controller",
849
+ "name": "foundationLayoutComponents",
1273
850
  "declaration": {
1274
- "name": "FoundationLayoutPopoutController",
1275
- "module": "src/main/layout-popout-controller.ts"
851
+ "name": "foundationLayoutComponents",
852
+ "module": "src/main/layout-components.ts"
1276
853
  }
1277
854
  }
1278
855
  ]
1279
856
  },
1280
857
  {
1281
858
  "kind": "javascript-module",
1282
- "path": "src/main/layout-region.ts",
859
+ "path": "src/main/layout-item.ts",
1283
860
  "declarations": [
1284
861
  {
1285
862
  "kind": "class",
1286
863
  "description": "",
1287
- "name": "FoundationLayoutRegion",
864
+ "name": "FoundationLayoutItem",
1288
865
  "members": [
866
+ {
867
+ "kind": "field",
868
+ "name": "title",
869
+ "type": {
870
+ "text": "string"
871
+ },
872
+ "description": "Sets the title of the item which is displayed on the tab.",
873
+ "privacy": "public"
874
+ },
875
+ {
876
+ "kind": "field",
877
+ "name": "closable",
878
+ "type": {
879
+ "text": "boolean"
880
+ },
881
+ "default": "false",
882
+ "description": "Boolean attribute controls whether the window can be closed in the GUI.\nDefaults to `false`.",
883
+ "privacy": "public"
884
+ },
1289
885
  {
1290
886
  "kind": "field",
1291
887
  "name": "size",
@@ -1297,12 +893,11 @@
1297
893
  },
1298
894
  {
1299
895
  "kind": "field",
1300
- "name": "type",
896
+ "name": "registration",
1301
897
  "type": {
1302
- "text": "LayoutRegionType"
898
+ "text": "string"
1303
899
  },
1304
- "default": "layoutRegionValue[0]",
1305
- "description": "Defines the LayoutRegionType| type of the region.\nDefaults to `horizontal`.",
900
+ "description": "Sets the registration name for the item, which can be used later to add the item via the JavaScript API using FoundationLayout.addItem.",
1306
901
  "privacy": "public"
1307
902
  },
1308
903
  {
@@ -1419,629 +1014,1034 @@
1419
1014
  ],
1420
1015
  "attributes": [
1421
1016
  {
1422
- "name": "size",
1017
+ "name": "title",
1423
1018
  "type": {
1424
1019
  "text": "string"
1425
1020
  },
1426
- "description": "optional string describing the size of the new item (see the written documentation for more info)",
1427
- "fieldName": "size"
1021
+ "description": "Sets the title of the item which is displayed on the tab.",
1022
+ "fieldName": "title"
1428
1023
  },
1429
1024
  {
1430
- "name": "type",
1431
1025
  "type": {
1432
- "text": "LayoutRegionType"
1433
- },
1434
- "default": "defaultLayoutType",
1435
- "description": "Defines the LayoutRegionType| type of the region.\nDefaults to `horizontal`.",
1436
- "resolveInitializer": {
1437
- "module": "src/main/layout-region.ts"
1026
+ "text": "boolean"
1438
1027
  },
1439
- "fieldName": "type"
1440
- }
1441
- ],
1442
- "superclass": {
1443
- "name": "FoundationElement",
1444
- "package": "@microsoft/fast-foundation"
1445
- },
1446
- "tagName": "%%prefix%%-layout-region",
1447
- "customElement": true
1448
- }
1449
- ],
1450
- "exports": [
1451
- {
1452
- "kind": "js",
1453
- "name": "FoundationLayoutRegion",
1454
- "declaration": {
1455
- "name": "FoundationLayoutRegion",
1456
- "module": "src/main/layout-region.ts"
1457
- }
1458
- }
1459
- ]
1460
- },
1461
- {
1462
- "kind": "javascript-module",
1463
- "path": "src/utils/constants.ts",
1464
- "declarations": [
1465
- {
1466
- "kind": "variable",
1467
- "name": "DEFAULT_RELOAD_BUFFER",
1468
- "type": {
1469
- "text": "number"
1470
- },
1471
- "default": "500",
1472
- "description": "Default time in milliseconds for the layout to buffer calls to reloading\nthe layout while the declarative API is loading.\n\nDuring the first load of the layout, a loading spinner will be shown.",
1473
- "privacy": "public"
1474
- },
1475
- {
1476
- "kind": "variable",
1477
- "name": "LAYOUT_POPOUT_CONTROL_KEY",
1478
- "type": {
1479
- "text": "string"
1480
- },
1481
- "default": "'f-layout-key'",
1482
- "description": "Key to be used for controlling popout behaviour"
1483
- },
1484
- {
1485
- "kind": "variable",
1486
- "name": "POPOUT_GEOMETRY_BROADCAST_INTERVAL",
1487
- "type": {
1488
- "text": "number"
1489
- },
1490
- "default": "1000",
1491
- "description": "How often a popout window should check to broadcast its\ngeometry"
1492
- },
1493
- {
1494
- "kind": "variable",
1495
- "name": "LAYOUT_POPOUT_CONTAINER_CLASS",
1496
- "type": {
1497
- "text": "string"
1498
- },
1499
- "default": "'f-layout-popout'",
1500
- "description": "Put this classname on an element which is a DOM parent of the layout, and\nif the layout goes into popout mode then it will place itself as the only child\nfor the popout container you set."
1501
- },
1502
- {
1503
- "kind": "variable",
1504
- "name": "DEFAULT_TAB_HEIGHT",
1505
- "type": {
1506
- "text": "string"
1507
- },
1508
- "default": "'36px'"
1509
- },
1510
- {
1511
- "kind": "function",
1512
- "name": "getLayoutHeaderHeight"
1513
- },
1514
- {
1515
- "kind": "variable",
1516
- "name": "DEFAULT_BORDER_WIDTH",
1517
- "type": {
1518
- "text": "number"
1519
- },
1520
- "default": "0"
1521
- },
1522
- {
1523
- "kind": "function",
1524
- "name": "getItemBorderWidth"
1525
- }
1526
- ],
1527
- "exports": [
1528
- {
1529
- "kind": "js",
1530
- "name": "DEFAULT_RELOAD_BUFFER",
1531
- "declaration": {
1532
- "name": "DEFAULT_RELOAD_BUFFER",
1533
- "module": "src/utils/constants.ts"
1534
- }
1535
- },
1536
- {
1537
- "kind": "js",
1538
- "name": "LAYOUT_POPOUT_CONTROL_KEY",
1539
- "declaration": {
1540
- "name": "LAYOUT_POPOUT_CONTROL_KEY",
1541
- "module": "src/utils/constants.ts"
1542
- }
1543
- },
1544
- {
1545
- "kind": "js",
1546
- "name": "POPOUT_GEOMETRY_BROADCAST_INTERVAL",
1547
- "declaration": {
1548
- "name": "POPOUT_GEOMETRY_BROADCAST_INTERVAL",
1549
- "module": "src/utils/constants.ts"
1550
- }
1551
- },
1552
- {
1553
- "kind": "js",
1554
- "name": "LAYOUT_POPOUT_CONTAINER_CLASS",
1555
- "declaration": {
1556
- "name": "LAYOUT_POPOUT_CONTAINER_CLASS",
1557
- "module": "src/utils/constants.ts"
1558
- }
1559
- },
1560
- {
1561
- "kind": "js",
1562
- "name": "DEFAULT_TAB_HEIGHT",
1563
- "declaration": {
1564
- "name": "DEFAULT_TAB_HEIGHT",
1565
- "module": "src/utils/constants.ts"
1566
- }
1567
- },
1568
- {
1569
- "kind": "js",
1570
- "name": "getLayoutHeaderHeight",
1571
- "declaration": {
1572
- "name": "getLayoutHeaderHeight",
1573
- "module": "src/utils/constants.ts"
1574
- }
1575
- },
1576
- {
1577
- "kind": "js",
1578
- "name": "DEFAULT_BORDER_WIDTH",
1579
- "declaration": {
1580
- "name": "DEFAULT_BORDER_WIDTH",
1581
- "module": "src/utils/constants.ts"
1582
- }
1583
- },
1584
- {
1585
- "kind": "js",
1586
- "name": "getItemBorderWidth",
1587
- "declaration": {
1588
- "name": "getItemBorderWidth",
1589
- "module": "src/utils/constants.ts"
1590
- }
1591
- }
1592
- ]
1593
- },
1594
- {
1595
- "kind": "javascript-module",
1596
- "path": "src/utils/error.ts",
1597
- "declarations": [
1598
- {
1599
- "kind": "class",
1600
- "description": "",
1601
- "name": "LayoutUsageError",
1602
- "superclass": {
1603
- "name": "Error",
1604
- "module": "src/utils/error.ts"
1605
- }
1606
- },
1607
- {
1608
- "kind": "class",
1609
- "description": "",
1610
- "name": "LayoutRegistrationError",
1028
+ "default": "false",
1029
+ "description": "Boolean attribute controls whether the window can be closed in the GUI.\nDefaults to `false`.",
1030
+ "fieldName": "closable"
1031
+ },
1032
+ {
1033
+ "name": "size",
1034
+ "type": {
1035
+ "text": "string"
1036
+ },
1037
+ "description": "optional string describing the size of the new item (see the written documentation for more info)",
1038
+ "fieldName": "size"
1039
+ },
1040
+ {
1041
+ "name": "registration",
1042
+ "type": {
1043
+ "text": "string"
1044
+ },
1045
+ "description": "Sets the registration name for the item, which can be used later to add the item via the JavaScript API using FoundationLayout.addItem.",
1046
+ "fieldName": "registration"
1047
+ }
1048
+ ],
1611
1049
  "superclass": {
1612
- "name": "Error",
1613
- "module": "src/utils/error.ts"
1614
- }
1615
- }
1616
- ],
1617
- "exports": [
1618
- {
1619
- "kind": "js",
1620
- "name": "LayoutUsageError",
1621
- "declaration": {
1622
- "name": "LayoutUsageError",
1623
- "module": "src/utils/error.ts"
1624
- }
1625
- },
1626
- {
1627
- "kind": "js",
1628
- "name": "LayoutRegistrationError",
1629
- "declaration": {
1630
- "name": "LayoutRegistrationError",
1631
- "module": "src/utils/error.ts"
1632
- }
1633
- }
1634
- ]
1635
- },
1636
- {
1637
- "kind": "javascript-module",
1638
- "path": "src/utils/events.ts",
1639
- "declarations": [
1640
- {
1641
- "kind": "variable",
1642
- "name": "LayoutEmitEvents",
1643
- "type": {
1644
- "text": "{\n firstLoaded: 'first-loaded',\n itemAdded: 'item-added',\n itemRemoved: 'item-removed',\n itemResized: 'item-resized',\n stateChanged: 'state-changed',\n}"
1645
- },
1646
- "default": "{\n firstLoaded: 'first-loaded',\n itemAdded: 'item-added',\n itemRemoved: 'item-removed',\n itemResized: 'item-resized',\n stateChanged: 'state-changed',\n}",
1647
- "description": "Defines events that the layout system emits\n\n'firstLoaded' - emitted when the layout has finished loading the first time\nusing the declarative API after DEFAULT_RELOAD_BUFFER ms.\n<br/>\n'itemAdded' - emitted when an item is added to the layout'\n<br/>\n'itemRemoved' - emitted when an item is removed from the layout'\n<br/>\n'itemResized' - emitted when the user drags the divider to resize elements\n<br/>\n'stateChanged' - emitted on every persisted layout change. This is the broadest\nevent: it fires wherever the layout caches/saves its state, which includes item\nadd/remove/resize but ALSO the changes the granular events miss — dragging a pane\nto a new position, loading a whole layout via FoundationLayout.loadLayout,\nreverting to the default, and contained-item autosave requests. Prefer this when\nyou need to mirror the layout to your own store and must not miss any change.",
1648
- "privacy": "public"
1649
- },
1650
- {
1651
- "kind": "variable",
1652
- "name": "LayoutReceiveEvents",
1653
- "type": {
1654
- "text": "{\n changeTitle: 'change-title',\n autosave: 'autosave',\n}"
1050
+ "name": "FoundationElement",
1051
+ "package": "@microsoft/fast-foundation"
1655
1052
  },
1656
- "default": "{\n changeTitle: 'change-title',\n autosave: 'autosave',\n}",
1657
- "description": "Defines events that the layout system listens for\n\n'changeTitle' - emit this from a contained item to update the title of the window that contains it.\n'autosave' - emit this from a contained item to hint to the layout system that it should autosave the layout. A contained item should do this if it has just changed some state it would like to persist. See LayoutComponentWithState.",
1658
- "privacy": "public"
1053
+ "tagName": "%%prefix%%-layout-item",
1054
+ "customElement": true
1659
1055
  }
1660
1056
  ],
1661
1057
  "exports": [
1662
1058
  {
1663
1059
  "kind": "js",
1664
- "name": "LayoutEmitEvents",
1665
- "declaration": {
1666
- "name": "LayoutEmitEvents",
1667
- "module": "src/utils/events.ts"
1668
- }
1669
- },
1670
- {
1671
- "kind": "js",
1672
- "name": "LayoutReceiveEvents",
1060
+ "name": "FoundationLayoutItem",
1673
1061
  "declaration": {
1674
- "name": "LayoutReceiveEvents",
1675
- "module": "src/utils/events.ts"
1062
+ "name": "FoundationLayoutItem",
1063
+ "module": "src/main/layout-item.ts"
1676
1064
  }
1677
1065
  }
1678
1066
  ]
1679
1067
  },
1680
1068
  {
1681
1069
  "kind": "javascript-module",
1682
- "path": "src/utils/factory-registry.ts",
1070
+ "path": "src/main/layout-main.ts",
1683
1071
  "declarations": [
1684
1072
  {
1685
- "kind": "function",
1686
- "name": "registerFactory",
1687
- "return": {
1688
- "type": {
1689
- "text": "void"
1690
- }
1691
- },
1692
- "parameters": [
1073
+ "kind": "class",
1074
+ "description": "",
1075
+ "name": "FoundationLayout",
1076
+ "members": [
1077
+ {
1078
+ "kind": "field",
1079
+ "name": "layout",
1080
+ "type": {
1081
+ "text": "GoldenLayout"
1082
+ },
1083
+ "privacy": "private"
1084
+ },
1085
+ {
1086
+ "kind": "field",
1087
+ "name": "layoutConfig",
1088
+ "type": {
1089
+ "text": "LayoutConfig"
1090
+ },
1091
+ "privacy": "private",
1092
+ "default": "{ root: undefined }"
1093
+ },
1094
+ {
1095
+ "kind": "field",
1096
+ "name": "defaultLayoutConfig",
1097
+ "type": {
1098
+ "text": "LayoutConfig"
1099
+ },
1100
+ "privacy": "private",
1101
+ "default": "{ root: undefined }"
1102
+ },
1103
+ {
1104
+ "kind": "field",
1105
+ "name": "reloadBuffer",
1106
+ "type": {
1107
+ "text": "number"
1108
+ },
1109
+ "default": "DEFAULT_RELOAD_BUFFER",
1110
+ "description": "Number describing how long to wait in ms before reloading the config when adding items\ndeclaratively by the html API. Default 500 (ms).",
1111
+ "privacy": "public"
1112
+ },
1113
+ {
1114
+ "kind": "field",
1115
+ "name": "reloadPending",
1116
+ "type": {
1117
+ "text": "boolean"
1118
+ },
1119
+ "privacy": "private",
1120
+ "default": "false"
1121
+ },
1122
+ {
1123
+ "kind": "field",
1124
+ "name": "registeredComponents",
1125
+ "type": {
1126
+ "text": "number"
1127
+ },
1128
+ "privacy": "private",
1129
+ "default": "0"
1130
+ },
1131
+ {
1132
+ "kind": "field",
1133
+ "name": "autoSaveKey",
1134
+ "type": {
1135
+ "text": "string | undefined"
1136
+ },
1137
+ "description": "Attribute which if set will auto save and load the layout as the user changes it.\nOmit this attribute to disable this feature.\nSet attribute using `auto-save-key`.",
1138
+ "privacy": "public"
1139
+ },
1140
+ {
1141
+ "kind": "field",
1142
+ "name": "missingItemPlaceholder",
1143
+ "description": "Function which is used to generate the placeholder text when a layout is loaded\nwith a missing item.",
1144
+ "privacy": "public"
1145
+ },
1146
+ {
1147
+ "kind": "field",
1148
+ "name": "dimensionsConfig",
1149
+ "type": {
1150
+ "text": "LayoutConfig.Dimensions | undefined"
1151
+ },
1152
+ "description": "Apply dimensions config to the layout, such as setting the size of the drag handles.",
1153
+ "privacy": "public"
1154
+ },
1155
+ {
1156
+ "kind": "field",
1157
+ "name": "hasFirstLoaded",
1158
+ "type": {
1159
+ "text": "boolean"
1160
+ },
1161
+ "default": "false",
1162
+ "description": "Boolean signifies whether the layout has loaded for the first time or not.",
1163
+ "privacy": "public"
1164
+ },
1165
+ {
1166
+ "kind": "field",
1167
+ "name": "customButtons",
1168
+ "type": {
1169
+ "text": "CustomButton[]"
1170
+ },
1171
+ "default": "[]",
1172
+ "description": "Set custom button definition on this property to add them to the layout header controls",
1173
+ "privacy": "public"
1174
+ },
1175
+ {
1176
+ "kind": "field",
1177
+ "name": "dragging",
1178
+ "type": {
1179
+ "text": "boolean"
1180
+ },
1181
+ "default": "false",
1182
+ "privacy": "public"
1183
+ },
1184
+ {
1185
+ "kind": "field",
1186
+ "name": "class",
1187
+ "privacy": "public",
1188
+ "default": "'FoundationLayoutMain'",
1189
+ "type": {
1190
+ "text": "'FoundationLayoutMain'"
1191
+ }
1192
+ },
1193
+ {
1194
+ "kind": "field",
1195
+ "name": "lifecycleUpdateToken",
1196
+ "type": {
1197
+ "text": "string | undefined"
1198
+ },
1199
+ "privacy": "public",
1200
+ "default": "undefined",
1201
+ "description": "Used to calculate whether a layout item should run its lifecycle methods or not"
1202
+ },
1203
+ {
1204
+ "kind": "field",
1205
+ "name": "popoutConfig",
1206
+ "type": {
1207
+ "text": "LayoutPopoutConfig | undefined"
1208
+ },
1209
+ "default": "undefined",
1210
+ "description": "Controls whether popout functionality is enabled on the layout. Defaults to disabled.\nPass an empty object `{}` to use default configurations, or a LayoutPopoutConfig object to further customise."
1211
+ },
1212
+ {
1213
+ "kind": "method",
1214
+ "name": "layoutRequiredRegistrations",
1215
+ "static": true,
1216
+ "return": {
1217
+ "type": {
1218
+ "text": ""
1219
+ }
1220
+ },
1221
+ "parameters": [
1222
+ {
1223
+ "name": "layout",
1224
+ "type": {
1225
+ "text": "SerialisedLayout"
1226
+ },
1227
+ "description": "any version of {@link SerialisedLayout}object describing the layout\n * "
1228
+ }
1229
+ ],
1230
+ "description": "JS API, public",
1231
+ "privacy": "public"
1232
+ },
1233
+ {
1234
+ "kind": "method",
1235
+ "name": "registeredItems",
1236
+ "return": {
1237
+ "type": {
1238
+ "text": ""
1239
+ }
1240
+ },
1241
+ "privacy": "public"
1242
+ },
1693
1243
  {
1694
- "name": "key",
1244
+ "kind": "method",
1245
+ "name": "getLayout",
1246
+ "return": {
1247
+ "type": {
1248
+ "text": ""
1249
+ }
1250
+ },
1251
+ "privacy": "public"
1252
+ },
1253
+ {
1254
+ "kind": "method",
1255
+ "name": "tryActivatePopoutMode",
1256
+ "return": {
1257
+ "type": {
1258
+ "text": "boolean"
1259
+ }
1260
+ },
1261
+ "description": "If in a popout window from the dynamic layout, this function will run the flow to put the component in popout mode.\nThis function is automatically called if using the declarative HTML API, but if only using the JavaScript API then you will need to call this function manually."
1262
+ },
1263
+ {
1264
+ "kind": "method",
1265
+ "name": "tryLoadLayoutFromLocalStorage",
1266
+ "return": {
1267
+ "type": {
1268
+ "text": ""
1269
+ }
1270
+ },
1271
+ "description": "Try to load a layout from local storage, or return false. Only required if manually calling FoundationLayout.registerItem",
1272
+ "privacy": "public"
1273
+ },
1274
+ {
1275
+ "kind": "method",
1276
+ "name": "clearAutosaveAndRevertToDefault",
1277
+ "return": {
1278
+ "type": {
1279
+ "text": ""
1280
+ }
1281
+ },
1282
+ "privacy": "public"
1283
+ },
1284
+ {
1285
+ "kind": "method",
1286
+ "name": "loadLayout",
1287
+ "parameters": [
1288
+ {
1289
+ "name": "layout",
1290
+ "type": {
1291
+ "text": "SerialisedLayout"
1292
+ },
1293
+ "description": "any version of {@link SerialisedLayout}object describing the layout\n * "
1294
+ },
1295
+ {
1296
+ "name": "handleMissingItem",
1297
+ "default": "'error'",
1298
+ "type": {
1299
+ "text": "'placeholder' | 'error'"
1300
+ },
1301
+ "description": "what to do if the layout contains items that are not currently registered with the layout system. Defaults to 'error' which will throw an error. If set to 'placeholder' then any missing items will be replaced with a placeholder element. You can control the text of the placeholder element with {@link FoundationLayout.missingItemPlaceholder}.\n * "
1302
+ },
1303
+ {
1304
+ "name": "disableCache",
1305
+ "default": "false",
1306
+ "type": {
1307
+ "text": "boolean"
1308
+ },
1309
+ "description": "if set to true then the layout will give you a new instance of every item, even if it has a currently cached item to use. Using this will not stop you from saving and loading state via the {@link LayoutComponentWithState}interface. Defaults to false.\n * "
1310
+ }
1311
+ ],
1312
+ "privacy": "public"
1313
+ },
1314
+ {
1315
+ "kind": "method",
1316
+ "name": "addItem",
1317
+ "parameters": [
1318
+ {
1319
+ "name": "config",
1320
+ "type": {
1321
+ "text": "RegisteredElementConfig | RegisteredElementConfig[]"
1322
+ },
1323
+ "description": "{@link RegisteredElementConfig}configuration items for the new items(s). Pass an array of {@link RegisteredElementConfig}to add multiple items at once.\n * "
1324
+ },
1325
+ {
1326
+ "name": "placement",
1327
+ "default": "defaultAddItemPlacement",
1328
+ "type": {
1329
+ "text": "Placement"
1330
+ },
1331
+ "description": "where and how to add the new items to the layout. For more info and defaults see {@link Placement}.\n * "
1332
+ }
1333
+ ],
1334
+ "privacy": "public"
1335
+ },
1336
+ {
1337
+ "kind": "method",
1338
+ "name": "removeItems",
1339
+ "return": {
1340
+ "type": {
1341
+ "text": ""
1342
+ }
1343
+ },
1344
+ "parameters": [
1345
+ {
1346
+ "name": "registration",
1347
+ "type": {
1348
+ "text": "string"
1349
+ },
1350
+ "description": "string of the registration ID"
1351
+ },
1352
+ {
1353
+ "name": "force",
1354
+ "default": "false",
1355
+ "type": {
1356
+ "text": "boolean"
1357
+ },
1358
+ "description": "if set to true then the item will be removed even if it is not closable. Defaults to false, which is the same behaviour as the close button on the header."
1359
+ }
1360
+ ],
1361
+ "privacy": "public"
1362
+ },
1363
+ {
1364
+ "kind": "method",
1365
+ "name": "registerItem",
1366
+ "return": {
1367
+ "type": {
1368
+ "text": ""
1369
+ }
1370
+ },
1371
+ "parameters": [
1372
+ {
1373
+ "name": "registration",
1374
+ "type": {
1375
+ "text": "string"
1376
+ },
1377
+ "description": "string of the registration ID"
1378
+ },
1379
+ {
1380
+ "name": "elementsOrFactory",
1381
+ "type": {
1382
+ "text": "Element[] | ComponentFactory"
1383
+ },
1384
+ "description": "Either Elements[] containing the reference to the elements to register, or a ComponentFactory function"
1385
+ }
1386
+ ],
1387
+ "privacy": "public"
1388
+ },
1389
+ {
1390
+ "kind": "method",
1391
+ "name": "updateLifecycleToken",
1392
+ "privacy": "private",
1393
+ "return": {
1394
+ "type": {
1395
+ "text": "void"
1396
+ }
1397
+ },
1398
+ "description": "The `LifecycleMixin` can use the lifecycleUpdateToken to determine if it needs to gate\nlifecycle methods from running when other items have been added or deleted.\nThis key is updated every time one of these actions are performed, so you can check if the key has changed and know you potentially need to gate some of your lifecycle functionality.\nThis method should be called whenever we are about to perform an action which will cause a lifecycle update, should as adding or removing an item from the layout"
1399
+ },
1400
+ {
1401
+ "kind": "method",
1402
+ "name": "handleGLRunErrors",
1403
+ "privacy": "private",
1404
+ "parameters": [
1405
+ {
1406
+ "name": "e",
1407
+ "type": {
1408
+ "text": "Error"
1409
+ }
1410
+ }
1411
+ ],
1412
+ "description": "For specific golden layout errors we can provide better information to the caller. Else re-throw the original error"
1413
+ },
1414
+ {
1415
+ "kind": "field",
1416
+ "name": "_presentation",
1695
1417
  "type": {
1696
- "text": "string"
1418
+ "text": "ComponentPresentation | null | undefined"
1697
1419
  },
1698
- "description": "Unique identifier for the factory. Should be descriptive and unique across the application."
1420
+ "privacy": "private",
1421
+ "default": "void 0",
1422
+ "inheritedFrom": {
1423
+ "name": "FoundationElement",
1424
+ "module": "src/foundation-element/foundation-element.ts"
1425
+ }
1426
+ },
1427
+ {
1428
+ "kind": "field",
1429
+ "name": "$presentation",
1430
+ "type": {
1431
+ "text": "ComponentPresentation | null"
1432
+ },
1433
+ "privacy": "public",
1434
+ "description": "A property which resolves the ComponentPresentation instance\nfor the current component.",
1435
+ "inheritedFrom": {
1436
+ "name": "FoundationElement",
1437
+ "module": "src/foundation-element/foundation-element.ts"
1438
+ }
1439
+ },
1440
+ {
1441
+ "kind": "field",
1442
+ "name": "template",
1443
+ "type": {
1444
+ "text": "ElementViewTemplate | void | null"
1445
+ },
1446
+ "privacy": "public",
1447
+ "description": "Sets the template of the element instance. When undefined,\nthe element will attempt to resolve the template from\nthe associated presentation or custom element definition.",
1448
+ "inheritedFrom": {
1449
+ "name": "FoundationElement",
1450
+ "module": "src/foundation-element/foundation-element.ts"
1451
+ }
1452
+ },
1453
+ {
1454
+ "kind": "method",
1455
+ "name": "templateChanged",
1456
+ "privacy": "protected",
1457
+ "return": {
1458
+ "type": {
1459
+ "text": "void"
1460
+ }
1461
+ },
1462
+ "inheritedFrom": {
1463
+ "name": "FoundationElement",
1464
+ "module": "src/foundation-element/foundation-element.ts"
1465
+ }
1466
+ },
1467
+ {
1468
+ "kind": "field",
1469
+ "name": "styles",
1470
+ "type": {
1471
+ "text": "ElementStyles | void | null"
1472
+ },
1473
+ "privacy": "public",
1474
+ "description": "Sets the default styles for the element instance. When undefined,\nthe element will attempt to resolve default styles from\nthe associated presentation or custom element definition.",
1475
+ "inheritedFrom": {
1476
+ "name": "FoundationElement",
1477
+ "module": "src/foundation-element/foundation-element.ts"
1478
+ }
1479
+ },
1480
+ {
1481
+ "kind": "method",
1482
+ "name": "stylesChanged",
1483
+ "privacy": "protected",
1484
+ "return": {
1485
+ "type": {
1486
+ "text": "void"
1487
+ }
1488
+ },
1489
+ "inheritedFrom": {
1490
+ "name": "FoundationElement",
1491
+ "module": "src/foundation-element/foundation-element.ts"
1492
+ }
1699
1493
  },
1700
1494
  {
1701
- "name": "factory",
1702
- "type": {
1703
- "text": "ComponentFactory"
1495
+ "kind": "method",
1496
+ "name": "compose",
1497
+ "privacy": "public",
1498
+ "static": true,
1499
+ "return": {
1500
+ "type": {
1501
+ "text": "(\n overrideDefinition?: OverrideFoundationElementDefinition<T>\n ) => FoundationElementRegistry<T, K>"
1502
+ }
1704
1503
  },
1705
- "description": "The factory function that creates the component."
1504
+ "parameters": [
1505
+ {
1506
+ "name": "this",
1507
+ "type": {
1508
+ "text": "K"
1509
+ }
1510
+ },
1511
+ {
1512
+ "name": "elementDefinition",
1513
+ "type": {
1514
+ "text": "T"
1515
+ },
1516
+ "description": "The definition of the element to create the registry\nfunction for."
1517
+ }
1518
+ ],
1519
+ "description": "Defines an element registry function with a set of element definition defaults.",
1520
+ "inheritedFrom": {
1521
+ "name": "FoundationElement",
1522
+ "module": "src/foundation-element/foundation-element.ts"
1523
+ }
1706
1524
  }
1707
1525
  ],
1708
- "description": "Registers a factory function with a unique key.\nThis allows framework components to be used in the declarative layout API\nwithout needing to pass function references through HTML attributes.",
1709
- "privacy": "public"
1710
- },
1711
- {
1712
- "kind": "function",
1713
- "name": "getFactory",
1714
- "return": {
1715
- "type": {
1716
- "text": ""
1526
+ "events": [
1527
+ {
1528
+ "description": "emitted when the layout has finished loading the first time",
1529
+ "name": "first-loaded"
1530
+ },
1531
+ {
1532
+ "description": "emitted when an item is added to the layout",
1533
+ "name": "item-added"
1534
+ },
1535
+ {
1536
+ "description": "emitted when an item is removed from the layout",
1537
+ "name": "item-removed"
1538
+ },
1539
+ {
1540
+ "description": "emitted when the user drags the divider to resize elements",
1541
+ "name": "item-resized"
1542
+ },
1543
+ {
1544
+ "description": "emitted on every persisted layout change (add/remove/resize, drag-move, loadLayout, revert-to-default, autosave request); use this to mirror the layout without missing any change",
1545
+ "name": "state-changed"
1717
1546
  }
1718
- },
1719
- "parameters": [
1547
+ ],
1548
+ "attributes": [
1720
1549
  {
1721
- "name": "key",
1550
+ "name": "reload-buffer",
1722
1551
  "type": {
1723
- "text": "string"
1552
+ "text": "number"
1724
1553
  },
1725
- "description": "The unique identifier for the factory."
1726
- }
1727
- ],
1728
- "description": "Retrieves a factory function by its key.",
1729
- "privacy": "public"
1730
- },
1731
- {
1732
- "kind": "function",
1733
- "name": "unregisterFactory",
1734
- "return": {
1735
- "type": {
1736
- "text": ""
1737
- }
1738
- },
1739
- "parameters": [
1554
+ "default": "DEFAULT_RELOAD_BUFFER",
1555
+ "description": "Number describing how long to wait in ms before reloading the config when adding items\ndeclaratively by the html API. Default 500 (ms).",
1556
+ "resolveInitializer": {
1557
+ "module": "/src/utils"
1558
+ },
1559
+ "fieldName": "reloadBuffer"
1560
+ },
1740
1561
  {
1741
- "name": "key",
1562
+ "name": "auto-save-key",
1742
1563
  "type": {
1743
- "text": "string"
1564
+ "text": "string | undefined"
1744
1565
  },
1745
- "description": "The unique identifier for the factory to remove."
1566
+ "description": "Attribute which if set will auto save and load the layout as the user changes it.\nOmit this attribute to disable this feature.\nSet attribute using `auto-save-key`.",
1567
+ "fieldName": "autoSaveKey"
1746
1568
  }
1747
1569
  ],
1748
- "description": "Removes a factory from the registry.\nThis is useful for cleanup when a component is unmounted or no longer needed.",
1749
- "privacy": "public"
1750
- }
1751
- ],
1752
- "exports": [
1753
- {
1754
- "kind": "js",
1755
- "name": "registerFactory",
1756
- "declaration": {
1757
- "name": "registerFactory",
1758
- "module": "src/utils/factory-registry.ts"
1759
- }
1760
- },
1761
- {
1762
- "kind": "js",
1763
- "name": "getFactory",
1764
- "declaration": {
1765
- "name": "getFactory",
1766
- "module": "src/utils/factory-registry.ts"
1767
- }
1768
- },
1769
- {
1770
- "kind": "js",
1771
- "name": "unregisterFactory",
1772
- "declaration": {
1773
- "name": "unregisterFactory",
1774
- "module": "src/utils/factory-registry.ts"
1775
- }
1776
- }
1777
- ]
1778
- },
1779
- {
1780
- "kind": "javascript-module",
1781
- "path": "src/utils/index.ts",
1782
- "declarations": [],
1783
- "exports": [
1784
- {
1785
- "kind": "js",
1786
- "name": "*",
1787
- "declaration": {
1788
- "name": "*",
1789
- "package": "./constants"
1790
- }
1791
- },
1792
- {
1793
- "kind": "js",
1794
- "name": "*",
1795
- "declaration": {
1796
- "name": "*",
1797
- "package": "./error"
1798
- }
1799
- },
1800
- {
1801
- "kind": "js",
1802
- "name": "*",
1803
- "declaration": {
1804
- "name": "*",
1805
- "package": "./events"
1806
- }
1807
- },
1808
- {
1809
- "kind": "js",
1810
- "name": "*",
1811
- "declaration": {
1812
- "name": "*",
1813
- "package": "./factory-registry"
1814
- }
1815
- },
1816
- {
1817
- "kind": "js",
1818
- "name": "*",
1819
- "declaration": {
1820
- "name": "*",
1821
- "package": "./misc"
1822
- }
1823
- },
1824
- {
1825
- "kind": "js",
1826
- "name": "*",
1827
- "declaration": {
1828
- "name": "*",
1829
- "package": "./templates"
1830
- }
1831
- },
1832
- {
1833
- "kind": "js",
1834
- "name": "*",
1835
- "declaration": {
1836
- "name": "*",
1837
- "package": "./popout-events"
1838
- }
1839
- },
1840
- {
1841
- "kind": "js",
1842
- "name": "*",
1843
- "declaration": {
1844
- "name": "*",
1845
- "package": "./types"
1846
- }
1570
+ "superclass": {
1571
+ "name": "FoundationElement",
1572
+ "package": "@microsoft/fast-foundation"
1573
+ },
1574
+ "tagName": "%%prefix%%-layout",
1575
+ "customElement": true
1847
1576
  },
1848
- {
1849
- "kind": "js",
1850
- "name": "*",
1851
- "declaration": {
1852
- "name": "*",
1853
- "package": "./error"
1854
- }
1855
- }
1856
- ]
1857
- },
1858
- {
1859
- "kind": "javascript-module",
1860
- "path": "src/utils/logger.ts",
1861
- "declarations": [
1862
1577
  {
1863
1578
  "kind": "variable",
1864
- "name": "logger"
1579
+ "name": "layoutTemplate",
1580
+ "default": "html<FoundationLayout>`\n <template>\n ${when(\n (x) => Boolean(x.popoutConfig),\n html<FoundationLayout>`\n <foundation-layout-popout-controller\n ${ref('popoutController')}\n :parentLayout=\"${(x) => x}\"\n channel-name=\"${(x) => x.popoutConfig?.channelName}\"\n ></foundation-layout-popout-controller>\n `,\n )}\n ${when((x) => !x.hasFirstLoaded && x.usingDeclerativeAPI, loadingTemplate)}\n <div class=\"layout-container\" ${ref('layoutElement')}></div>\n </template>\n`",
1581
+ "description": "`ViewTemplate` which defines the html for FoundationLayout.",
1582
+ "privacy": "public"
1865
1583
  }
1866
1584
  ],
1867
1585
  "exports": [
1868
1586
  {
1869
1587
  "kind": "js",
1870
- "name": "logger",
1588
+ "name": "layoutStyles",
1871
1589
  "declaration": {
1872
- "name": "logger",
1873
- "module": "src/utils/logger.ts"
1590
+ "name": "layoutStyles",
1591
+ "module": "../styles"
1874
1592
  }
1875
- }
1876
- ]
1877
- },
1878
- {
1879
- "kind": "javascript-module",
1880
- "path": "src/utils/misc.ts",
1881
- "declarations": [],
1882
- "exports": []
1883
- },
1884
- {
1885
- "kind": "javascript-module",
1886
- "path": "src/utils/popout-events.ts",
1887
- "declarations": [
1888
- {
1889
- "kind": "variable",
1890
- "name": "LAYOUT_POPOUT_CHANNEL_NAME",
1891
- "type": {
1892
- "text": "string"
1893
- },
1894
- "default": "'f-layout-popout-channel'",
1895
- "description": "Name of the default broadcast channel used for layout popouts",
1896
- "privacy": "public"
1897
- }
1898
- ],
1899
- "exports": [
1593
+ },
1900
1594
  {
1901
1595
  "kind": "js",
1902
- "name": "LAYOUT_POPOUT_CHANNEL_NAME",
1596
+ "name": "FoundationLayout",
1903
1597
  "declaration": {
1904
- "name": "LAYOUT_POPOUT_CHANNEL_NAME",
1905
- "module": "src/utils/popout-events.ts"
1598
+ "name": "FoundationLayout",
1599
+ "module": "src/main/layout-main.ts"
1906
1600
  }
1907
1601
  },
1908
1602
  {
1909
1603
  "kind": "js",
1910
- "name": "PopoutGeometry",
1604
+ "name": "layoutTemplate",
1911
1605
  "declaration": {
1912
- "name": "PopoutGeometry",
1913
- "module": "src/utils/popout-events.ts"
1606
+ "name": "layoutTemplate",
1607
+ "module": "src/main/layout-main.ts"
1914
1608
  }
1915
1609
  }
1916
1610
  ]
1917
1611
  },
1918
1612
  {
1919
1613
  "kind": "javascript-module",
1920
- "path": "src/utils/templates.ts",
1921
- "declarations": [],
1922
- "exports": []
1923
- },
1924
- {
1925
- "kind": "javascript-module",
1926
- "path": "src/utils/types.ts",
1927
- "declarations": [],
1928
- "exports": []
1929
- },
1930
- {
1931
- "kind": "javascript-module",
1932
- "path": "src/styles/constants.ts",
1614
+ "path": "src/main/layout-popout-controller.ts",
1933
1615
  "declarations": [
1934
1616
  {
1935
- "kind": "function",
1936
- "name": "glVisualConfig",
1937
- "return": {
1938
- "type": {
1939
- "text": "Omit<LayoutConfig, 'root'>"
1617
+ "kind": "class",
1618
+ "description": "",
1619
+ "name": "FoundationLayoutPopoutController",
1620
+ "members": [
1621
+ {
1622
+ "kind": "field",
1623
+ "name": "channelName",
1624
+ "type": {
1625
+ "text": "string"
1626
+ }
1627
+ },
1628
+ {
1629
+ "kind": "field",
1630
+ "name": "layoutKey",
1631
+ "type": {
1632
+ "text": "string"
1633
+ },
1634
+ "privacy": "private"
1635
+ },
1636
+ {
1637
+ "kind": "field",
1638
+ "name": "channel",
1639
+ "type": {
1640
+ "text": "TypedBroadcastChannel<LayoutPopoutEvents>"
1641
+ },
1642
+ "privacy": "private"
1643
+ },
1644
+ {
1645
+ "kind": "field",
1646
+ "name": "pollInterval",
1647
+ "type": {
1648
+ "text": "any"
1649
+ },
1650
+ "privacy": "private"
1651
+ },
1652
+ {
1653
+ "kind": "field",
1654
+ "name": "unloadHandler",
1655
+ "type": {
1656
+ "text": "() => void"
1657
+ },
1658
+ "privacy": "private"
1659
+ },
1660
+ {
1661
+ "kind": "field",
1662
+ "name": "lastUpdate",
1663
+ "type": {
1664
+ "text": "string"
1665
+ },
1666
+ "privacy": "private"
1667
+ },
1668
+ {
1669
+ "kind": "field",
1670
+ "name": "popoutRegistry",
1671
+ "type": {
1672
+ "text": "Map<\n string,\n { geometry: PopoutGeometry; state?: unknown; window?: Window }\n >"
1673
+ },
1674
+ "privacy": "private",
1675
+ "default": "new Map()"
1676
+ },
1677
+ {
1678
+ "kind": "method",
1679
+ "name": "setupChannel",
1680
+ "privacy": "private"
1681
+ },
1682
+ {
1683
+ "kind": "method",
1684
+ "name": "setupListener",
1685
+ "privacy": "private"
1686
+ },
1687
+ {
1688
+ "kind": "method",
1689
+ "name": "applyStateToParent",
1690
+ "privacy": "private",
1691
+ "parameters": [
1692
+ {
1693
+ "name": "state",
1694
+ "type": {
1695
+ "text": "unknown"
1696
+ }
1697
+ }
1698
+ ]
1699
+ },
1700
+ {
1701
+ "kind": "method",
1702
+ "name": "setupUnloadListener",
1703
+ "privacy": "private"
1704
+ },
1705
+ {
1706
+ "kind": "method",
1707
+ "name": "teardownUnloadListener",
1708
+ "privacy": "private"
1709
+ },
1710
+ {
1711
+ "kind": "method",
1712
+ "name": "emitAutosave",
1713
+ "privacy": "private"
1714
+ },
1715
+ {
1716
+ "kind": "method",
1717
+ "name": "startPolling",
1718
+ "privacy": "private"
1719
+ },
1720
+ {
1721
+ "kind": "method",
1722
+ "name": "stopPolling",
1723
+ "privacy": "private"
1724
+ },
1725
+ {
1726
+ "kind": "method",
1727
+ "name": "getGeometry",
1728
+ "privacy": "private",
1729
+ "return": {
1730
+ "type": {
1731
+ "text": "Promise<PopoutGeometry>"
1732
+ }
1733
+ }
1734
+ },
1735
+ {
1736
+ "kind": "method",
1737
+ "name": "getComponentState",
1738
+ "privacy": "private",
1739
+ "return": {
1740
+ "type": {
1741
+ "text": "unknown"
1742
+ }
1743
+ }
1744
+ },
1745
+ {
1746
+ "kind": "method",
1747
+ "name": "broadcastUpdate",
1748
+ "privacy": "private",
1749
+ "parameters": [
1750
+ {
1751
+ "name": "geometry",
1752
+ "type": {
1753
+ "text": "PopoutGeometry"
1754
+ }
1755
+ },
1756
+ {
1757
+ "name": "state",
1758
+ "optional": true,
1759
+ "type": {
1760
+ "text": "unknown"
1761
+ }
1762
+ }
1763
+ ]
1764
+ },
1765
+ {
1766
+ "kind": "method",
1767
+ "name": "openPopout",
1768
+ "privacy": "public",
1769
+ "parameters": [
1770
+ {
1771
+ "name": "registration",
1772
+ "type": {
1773
+ "text": "string"
1774
+ },
1775
+ "description": "The registration ID of the component to pop out."
1776
+ },
1777
+ {
1778
+ "name": "popoutState",
1779
+ "optional": true,
1780
+ "type": {
1781
+ "text": "PopoutState"
1782
+ },
1783
+ "description": "Optional state (geometry and component state) to use for the new window."
1784
+ },
1785
+ {
1786
+ "name": "uuid",
1787
+ "optional": true,
1788
+ "type": {
1789
+ "text": "any"
1790
+ },
1791
+ "description": "UUID generator from parent layout"
1792
+ }
1793
+ ],
1794
+ "description": "Opens a component in a popout window."
1795
+ },
1796
+ {
1797
+ "kind": "method",
1798
+ "name": "getRegistry",
1799
+ "privacy": "public",
1800
+ "return": {
1801
+ "type": {
1802
+ "text": "{ [layoutKey: string]: PopoutState }"
1803
+ }
1804
+ }
1805
+ },
1806
+ {
1807
+ "kind": "method",
1808
+ "name": "restorePopouts",
1809
+ "privacy": "public",
1810
+ "parameters": [
1811
+ {
1812
+ "name": "registry",
1813
+ "type": {
1814
+ "text": "{ [layoutKey: string]: PopoutState }"
1815
+ }
1816
+ },
1817
+ {
1818
+ "name": "uuid",
1819
+ "type": {
1820
+ "text": "any"
1821
+ }
1822
+ }
1823
+ ],
1824
+ "description": "Restores popouts from a registry"
1825
+ },
1826
+ {
1827
+ "kind": "method",
1828
+ "name": "closeAllPopouts",
1829
+ "privacy": "public"
1940
1830
  }
1941
- }
1942
- },
1943
- {
1944
- "kind": "variable",
1945
- "name": "LAYOUT_ICONS",
1946
- "type": {
1947
- "text": "{\n renameSVG,\n maximiseSVG,\n minimiseSVG,\n closeSVG,\n tabDropdownSVG,\n popoutSVG,\n}"
1831
+ ],
1832
+ "attributes": [
1833
+ {
1834
+ "name": "channel-name",
1835
+ "type": {
1836
+ "text": "string"
1837
+ },
1838
+ "fieldName": "channelName"
1839
+ }
1840
+ ],
1841
+ "superclass": {
1842
+ "name": "FASTElement",
1843
+ "package": "@microsoft/fast-element"
1948
1844
  },
1949
- "default": "{\n renameSVG,\n maximiseSVG,\n minimiseSVG,\n closeSVG,\n tabDropdownSVG,\n popoutSVG,\n}",
1950
- "description": "A collection of SVG icons in base64 format.",
1951
- "privacy": "public"
1952
- }
1953
- ],
1954
- "exports": [
1955
- {
1956
- "kind": "js",
1957
- "name": "glVisualConfig",
1958
- "declaration": {
1959
- "name": "glVisualConfig",
1960
- "module": "src/styles/constants.ts"
1961
- }
1962
- },
1963
- {
1964
- "kind": "js",
1965
- "name": "LAYOUT_ICONS",
1966
- "declaration": {
1967
- "name": "LAYOUT_ICONS",
1968
- "module": "src/styles/constants.ts"
1969
- }
1970
- }
1971
- ]
1972
- },
1973
- {
1974
- "kind": "javascript-module",
1975
- "path": "src/styles/dragging.styles.ts",
1976
- "declarations": [
1977
- {
1978
- "kind": "variable",
1979
- "name": "globalDraggingStyles",
1980
- "default": "`\n .lm_dragProxy .lm_content {\n box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.9);\n }\n .lm_dropTargetIndicator {\n outline: 1px dashed #cccccc;\n transition: all 200ms ease;\n }\n .lm_dropTargetIndicator .lm_inner {\n background: var(${neutralFillStealthRest.cssCustomProperty});\n opacity: 0.2;\n }\n .lm_dragProxy.lm_left .lm_header,\n .lm_dragProxy.lm_right .lm_header {\n width: 20px;\n float: left;\n vertical-align: top;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs,\n .lm_dragProxy.lm_right .lm_header .lm_tabs {\n transform-origin: left top;\n top: 0;\n width: 1000px;\n }\n .lm_dragProxy.lm_left .lm_header .lm_controls,\n .lm_dragProxy.lm_right .lm_header .lm_controls {\n bottom: 0;\n }\n .lm_dragProxy.lm_left .lm_items,\n .lm_dragProxy.lm_right .lm_items {\n float: left;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs {\n transform: rotate(-90deg) scaleX(-1);\n left: 0;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs .lm_tab {\n transform: scaleX(-1);\n margin-top: 1px;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabdropdown_list {\n top: initial;\n right: initial;\n left: 20px;\n }\n .lm_dragProxy.lm_right .lm_content {\n float: left;\n }\n .lm_dragProxy.lm_right .lm_header .lm_tabs {\n transform: rotate(90deg) scaleX(1);\n left: 100%;\n margin-left: 0;\n }\n .lm_dragProxy.lm_right .lm_header .lm_controls {\n left: 3px;\n }\n .lm_dragProxy.lm_right .lm_header .lm_tabdropdown_list {\n top: initial;\n right: 20px;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_tab {\n margin-top: 0;\n border-top: none;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_controls,\n .lm_stack.lm_bottom .lm_header .lm_controls {\n top: 3px;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_tabdropdown_list,\n .lm_stack.lm_bottom .lm_header .lm_tabdropdown_list {\n top: initial;\n bottom: 20px;\n }\n .lm_dragProxy {\n cursor: move;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 30;\n }\n .lm_dragProxy .lm_header {\n background: transparent;\n }\n .lm_dragProxy .lm_title {\n color: white;\n padding-left: 10px;\n }\n .lm_dragProxy .lm_content {\n border-top: none;\n overflow: hidden;\n }\n .lm_dropTargetIndicator {\n display: none;\n position: absolute;\n z-index: 20;\n }\n .lm_dropTargetIndicator .lm_inner {\n width: 100%;\n height: 100%;\n position: relative;\n top: 0;\n left: 0;\n }\n .lm_transition_indicator {\n display: none;\n width: 20px;\n height: 20px;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 20;\n }\n`",
1981
- "description": "This is defined as a string rather than a css template\nbecause it is applied to a CSSStyleSheet object rather than\nused as a FAST template"
1845
+ "tagName": "foundation-layout-popout-controller",
1846
+ "customElement": true
1982
1847
  }
1983
1848
  ],
1984
1849
  "exports": [
1985
1850
  {
1986
1851
  "kind": "js",
1987
- "name": "globalDraggingStyles",
1988
- "declaration": {
1989
- "name": "globalDraggingStyles",
1990
- "module": "src/styles/dragging.styles.ts"
1991
- }
1992
- }
1993
- ]
1994
- },
1995
- {
1996
- "kind": "javascript-module",
1997
- "path": "src/styles/index.ts",
1998
- "declarations": [],
1999
- "exports": [
2000
- {
2001
- "kind": "js",
2002
- "name": "*",
2003
- "declaration": {
2004
- "name": "*",
2005
- "package": "./constants"
2006
- }
2007
- },
2008
- {
2009
- "kind": "js",
2010
- "name": "*",
1852
+ "name": "FoundationLayoutPopoutController",
2011
1853
  "declaration": {
2012
- "name": "*",
2013
- "package": "./dragging.styles"
1854
+ "name": "FoundationLayoutPopoutController",
1855
+ "module": "src/main/layout-popout-controller.ts"
2014
1856
  }
2015
1857
  },
2016
1858
  {
2017
- "kind": "js",
2018
- "name": "*",
1859
+ "kind": "custom-element-definition",
1860
+ "name": "foundation-layout-popout-controller",
2019
1861
  "declaration": {
2020
- "name": "*",
2021
- "package": "./layout.styles"
1862
+ "name": "FoundationLayoutPopoutController",
1863
+ "module": "src/main/layout-popout-controller.ts"
2022
1864
  }
2023
1865
  }
2024
1866
  ]
2025
1867
  },
2026
1868
  {
2027
1869
  "kind": "javascript-module",
2028
- "path": "src/styles/layout.styles.ts",
1870
+ "path": "src/main/layout-region.ts",
2029
1871
  "declarations": [
2030
1872
  {
2031
- "kind": "variable",
2032
- "name": "layoutStyles",
2033
- "default": "css`\n ${containerStyles}\n ${loadingSpinnerStyles}\n\n :host {\n --foundation-tab-height: calc(\n (((var(--base-height-multiplier) + var(--density)) * var(--design-unit)) - 4) * 1px\n );\n }\n\n .lm_goldenlayout {\n border-radius: calc(var(--control-corner-radius) * 1.5px);\n font-family: var(--body-font);\n box-sizing: border-box;\n }\n\n .lm_goldenlayout * {\n box-sizing: border-box;\n }\n\n .lm_stack.lm_item {\n background-color: var(--rapid-layout-item-background, var(--neutral-layer-3));\n border-style: solid;\n border-width: var(--rapid-layout-item-border-width, 0);\n border-color: var(--rapid-layout-item-border-color, var(--neutral-stroke-rest));\n border-radius: var(--card-corner-radius, calc(var(--control-corner-radius) * 1.5px));\n box-sizing: border-box;\n }\n\n .lm_maximised .lm_header {\n border-bottom: var(--card-border, 0);\n position: unset;\n }\n\n .lm_maximised .lm_header .lm_tabs {\n z-index: 3;\n }\n\n .lm_content {\n background-color: var(--neutral-layer-card-container);\n border-radius: calc(var(--control-corner-radius) * 1.5px) calc(var(--control-corner-radius) * 1.5px)\n var(--card-corner-radius, calc(var(--control-corner-radius) * 1.5px))\n var(--card-corner-radius, calc(var(--control-corner-radius) * 1.5px));\n border: var(--rapid-layout-item-inner-border, 1px solid var(--neutral-stroke-rest));\n box-sizing: border-box;\n color: var(--neutral-foreground-rest);\n }\n\n .lm_header .lm_tabs {\n padding: 0 16px;\n }\n\n .lm_header .lm_tab.lm_active {\n background: var(--tab-active-background-color, var(--neutral-layer-card-container));\n color: var(--accent-foreground-rest);\n border-style: solid;\n border-width: var(--tab-active-border-width, 1px 1px 0 1px);\n border-color: var(--tab-active-border-color, var(--neutral-stroke-rest));\n }\n\n .lm_header .lm_tab {\n align-items: center;\n background: var(--tab-rest-background-color, var(--neutral-layer-4));\n border-style: solid;\n border-width: var(--tab-rest-border-width, 1px);\n border-color: var(--tab-rest-border-color, transparent);\n border-radius: calc(var(--control-corner-radius) * 1.5px)\n calc(var(--control-corner-radius) * 1.5px) 0 0;\n color: var(--accent-foreground-rest);\n display: flex;\n font-family: inherit;\n font-size: var(--type-ramp-minus-1-font-size);\n font-weight: 400;\n height: var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT});\n margin-right: 2px;\n padding: 0 calc((12 + var(--design-unit) * 2 * var(--density)) * 1px);\n float: left;\n cursor: pointer;\n position: relative;\n }\n\n .lm_header .lm_tab:not(.lm_active):hover {\n background-color: var(--neutral-layer-card-container);\n color: var(--accent-foreground-rest);\n }\n\n .lm_header .lm_controls {\n top: 4px;\n display: flex;\n }\n .lm_header .lm_controls > * {\n width: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) - 8px);\n height: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) - 8px);\n background-repeat: no-repeat;\n background-position: center;\n background-size: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) * 0.45);\n background-color: var(\n --icon-button-background,\n color-mix(in srgb, var(--neutral-fill-strong-rest), transparent 90%)\n );\n border-radius: calc(var(--control-corner-radius) * 1.5px);\n margin-right: 4px;\n top: 3px;\n opacity: 1;\n }\n .lm_header .lm_controls > *:hover {\n background-color: color-mix(in srgb, var(--neutral-fill-strong-hover), transparent 75%);\n cursor: pointer;\n }\n\n .lm_controls .lm_maximise {\n background-image: url('${LAYOUT_ICONS.maximiseSVG}');\n }\n .lm_maximised .lm_controls .lm_maximise {\n background-image: url('${LAYOUT_ICONS.minimiseSVG}');\n }\n .lm_controls .lm_close {\n background-image: url('${LAYOUT_ICONS.closeSVG}');\n }\n .lm_header .lm_tab .lm_close_tab {\n background-image: url('${LAYOUT_ICONS.closeSVG}');\n background-size: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) * 0.2777);\n background-repeat: no-repeat;\n background-position: center;\n margin-left: calc((12 + var(--design-unit) * 2 * var(--density)) * 1px);\n position: relative;\n }\n\n .lm_header .lm_tab:not(.lm_active) .lm_title {\n color: var(--neutral-foreground-hint);\n }\n\n .lm_header .lm_controls .lm_tabdropdown::before {\n content: none;\n }\n .lm_header .lm_controls .lm_tabdropdown {\n background-image: url('${LAYOUT_ICONS.tabDropdownSVG}');\n }\n .lm_header .lm_tabdropdown_list {\n top: var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT});\n right: 108px;\n background-color: var(--neutral-layer-3);\n border: 1px solid;\n border-color: var(--neutral-stroke-rest);\n border-radius: calc(var(--control-corner-radius) * 1.5px);\n box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.35);\n }\n .lm_header .lm_tabdropdown_list > .lm_tab {\n box-shadow: none;\n padding: 0 16px;\n white-space: nowrap;\n background-color: transparent;\n color: var(--neutral-foreground-rest);\n height: var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT});\n border-radius: 0;\n overflow: visible;\n text-overflow: unset;\n }\n .lm_header .lm_tabdropdown_list > .lm_tab:last-child {\n border-bottom: 0;\n }\n\n /* gl base styles start */\n .lm_root {\n position: relative;\n }\n .lm_row > .lm_item {\n float: left;\n }\n .lm_content {\n overflow: hidden;\n position: relative;\n }\n .lm_dragging,\n .lm_dragging * {\n cursor: move !important;\n user-select: none;\n }\n .lm_maximised {\n left: 0;\n padding: 0;\n position: absolute;\n top: 0;\n z-index: 40;\n }\n .lm_maximise_placeholder {\n display: none;\n }\n .lm_splitter {\n position: relative;\n z-index: 20;\n }\n .lm_splitter:hover,\n .lm_splitter.lm_dragging {\n background: var(--accent-fill-rest);\n border-radius: calc(var(--control-corner-radius) * 4px);\n }\n .lm_splitter.lm_vertical .lm_drag_handle {\n width: 100%;\n height: 15px;\n position: absolute;\n top: -5px;\n cursor: ns-resize !important;\n }\n .lm_splitter.lm_horizontal {\n float: left;\n height: 100%;\n }\n .lm_splitter.lm_horizontal .lm_drag_handle {\n width: 15px;\n height: 100%;\n position: absolute;\n left: -5px;\n cursor: ew-resize !important;\n }\n .lm_header {\n overflow: visible;\n position: relative;\n border-bottom: var(--card-border, 0);\n }\n .lm_header .lm_controls {\n position: absolute;\n right: 3px;\n }\n .lm_header .lm_controls > li {\n cursor: pointer;\n float: left;\n width: 18px;\n height: 18px;\n text-align: center;\n }\n .lm_header ul {\n margin: 0;\n padding: 0;\n list-style-type: none;\n }\n .lm_header .lm_tabs {\n position: absolute;\n }\n .lm_header .lm_tab i {\n width: 2px;\n height: 19px;\n position: absolute;\n }\n .lm_header .lm_tab i.lm_left {\n top: 0;\n left: -2px;\n }\n .lm_header .lm_tab i.lm_right {\n top: 0;\n right: -2px;\n }\n .lm_header .lm_tab .lm_title {\n display: inline-block;\n overflow: hidden;\n text-overflow: ellipsis;\n user-select: none;\n }\n .lm_header .lm_tab .lm_close_tab {\n width: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) * 0.3888);\n height: calc(var(--foundation-tab-height, ${DEFAULT_TAB_HEIGHT}) * 0.3888);\n text-align: center;\n }\n .lm_stack.lm_left .lm_header,\n .lm_stack.lm_right .lm_header {\n height: 100%;\n }\n .lm_dragProxy.lm_left .lm_header,\n .lm_dragProxy.lm_right .lm_header,\n .lm_stack.lm_left .lm_header,\n .lm_stack.lm_right .lm_header {\n width: 20px;\n float: left;\n vertical-align: top;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs,\n .lm_dragProxy.lm_right .lm_header .lm_tabs,\n .lm_stack.lm_left .lm_header .lm_tabs,\n .lm_stack.lm_right .lm_header .lm_tabs {\n transform-origin: left top;\n top: 0;\n width: 1000px;\n }\n .lm_dragProxy.lm_left .lm_header .lm_controls,\n .lm_dragProxy.lm_right .lm_header .lm_controls,\n .lm_stack.lm_left .lm_header .lm_controls,\n .lm_stack.lm_right .lm_header .lm_controls {\n bottom: 0;\n }\n .lm_dragProxy.lm_left .lm_items,\n .lm_dragProxy.lm_right .lm_items,\n .lm_stack.lm_left .lm_items,\n .lm_stack.lm_right .lm_items {\n float: left;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs,\n .lm_stack.lm_left .lm_header .lm_tabs {\n transform: rotate(-90deg) scaleX(-1);\n left: 0;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabs .lm_tab,\n .lm_stack.lm_left .lm_header .lm_tabs .lm_tab {\n transform: scaleX(-1);\n margin-top: 1px;\n }\n .lm_dragProxy.lm_left .lm_header .lm_tabdropdown_list,\n .lm_stack.lm_left .lm_header .lm_tabdropdown_list {\n top: initial;\n right: initial;\n left: 20px;\n }\n .lm_dragProxy.lm_right .lm_content {\n float: left;\n }\n .lm_dragProxy.lm_right .lm_header .lm_tabs,\n .lm_stack.lm_right .lm_header .lm_tabs {\n transform: rotate(90deg) scaleX(1);\n left: 100%;\n margin-left: 0;\n }\n .lm_dragProxy.lm_right .lm_header .lm_controls,\n .lm_stack.lm_right .lm_header .lm_controls {\n left: 3px;\n }\n .lm_dragProxy.lm_right .lm_header .lm_tabdropdown_list,\n .lm_stack.lm_right .lm_header .lm_tabdropdown_list {\n top: initial;\n right: 20px;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_tab,\n .lm_stack.lm_bottom .lm_header .lm_tab {\n margin-top: 0;\n border-top: none;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_controls,\n .lm_stack.lm_bottom .lm_header .lm_controls {\n top: 3px;\n }\n .lm_dragProxy.lm_bottom .lm_header .lm_tabdropdown_list,\n .lm_stack.lm_bottom .lm_header .lm_tabdropdown_list {\n top: initial;\n bottom: 20px;\n }\n .lm_drop_tab_placeholder {\n float: left;\n width: 100px;\n height: 10px;\n visibility: hidden;\n }\n .lm_header .lm_tabdropdown_list {\n position: absolute;\n top: 20px;\n right: 0;\n z-index: 5;\n overflow: hidden;\n }\n .lm_header .lm_tabdropdown_list .lm_tab {\n clear: both;\n padding-right: 10px;\n margin: 0;\n }\n .lm_header .lm_tabdropdown_list .lm_tab .lm_title {\n width: 100px;\n }\n .lm_header .lm_tabdropdown_list .lm_close_tab {\n display: none !important;\n }\n .lm_dragProxy {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 30;\n }\n .lm_dragProxy .lm_header {\n background: transparent;\n }\n .lm_dragProxy .lm_content {\n border-top: none;\n overflow: hidden;\n }\n .lm_dropTargetIndicator {\n display: none;\n position: absolute;\n z-index: 20;\n box-shadow: none;\n }\n .lm_dropTargetIndicator .lm_inner {\n width: 100%;\n height: 100%;\n position: relative;\n top: 0;\n left: 0;\n }\n .lm_transition_indicator {\n display: none;\n width: 20px;\n height: 20px;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 20;\n }\n .lm_popin {\n width: 20px;\n height: 20px;\n position: absolute;\n bottom: 0;\n right: 0;\n z-index: 9999;\n }\n .lm_popin > * {\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n }\n .lm_popin > .lm_bg {\n z-index: 10;\n }\n .lm_popin > .lm_icon {\n z-index: 20;\n } /*# sourceMappingURL=goldenlayout-base.css.map */\n`",
2034
- "description": "`ElementStyles` which defines the css for FoundationLayout.",
2035
- "privacy": "public"
1873
+ "kind": "class",
1874
+ "description": "",
1875
+ "name": "FoundationLayoutRegion",
1876
+ "members": [
1877
+ {
1878
+ "kind": "field",
1879
+ "name": "size",
1880
+ "type": {
1881
+ "text": "string"
1882
+ },
1883
+ "description": "optional string describing the size of the new item (see the written documentation for more info)",
1884
+ "privacy": "public"
1885
+ },
1886
+ {
1887
+ "kind": "field",
1888
+ "name": "type",
1889
+ "type": {
1890
+ "text": "LayoutRegionType"
1891
+ },
1892
+ "default": "layoutRegionValue[0]",
1893
+ "description": "Defines the LayoutRegionType| type of the region.\nDefaults to `horizontal`.",
1894
+ "privacy": "public"
1895
+ },
1896
+ {
1897
+ "kind": "field",
1898
+ "name": "_presentation",
1899
+ "type": {
1900
+ "text": "ComponentPresentation | null | undefined"
1901
+ },
1902
+ "privacy": "private",
1903
+ "default": "void 0",
1904
+ "inheritedFrom": {
1905
+ "name": "FoundationElement",
1906
+ "module": "src/foundation-element/foundation-element.ts"
1907
+ }
1908
+ },
1909
+ {
1910
+ "kind": "field",
1911
+ "name": "$presentation",
1912
+ "type": {
1913
+ "text": "ComponentPresentation | null"
1914
+ },
1915
+ "privacy": "public",
1916
+ "description": "A property which resolves the ComponentPresentation instance\nfor the current component.",
1917
+ "inheritedFrom": {
1918
+ "name": "FoundationElement",
1919
+ "module": "src/foundation-element/foundation-element.ts"
1920
+ }
1921
+ },
1922
+ {
1923
+ "kind": "field",
1924
+ "name": "template",
1925
+ "type": {
1926
+ "text": "ElementViewTemplate | void | null"
1927
+ },
1928
+ "privacy": "public",
1929
+ "description": "Sets the template of the element instance. When undefined,\nthe element will attempt to resolve the template from\nthe associated presentation or custom element definition.",
1930
+ "inheritedFrom": {
1931
+ "name": "FoundationElement",
1932
+ "module": "src/foundation-element/foundation-element.ts"
1933
+ }
1934
+ },
1935
+ {
1936
+ "kind": "method",
1937
+ "name": "templateChanged",
1938
+ "privacy": "protected",
1939
+ "return": {
1940
+ "type": {
1941
+ "text": "void"
1942
+ }
1943
+ },
1944
+ "inheritedFrom": {
1945
+ "name": "FoundationElement",
1946
+ "module": "src/foundation-element/foundation-element.ts"
1947
+ }
1948
+ },
1949
+ {
1950
+ "kind": "field",
1951
+ "name": "styles",
1952
+ "type": {
1953
+ "text": "ElementStyles | void | null"
1954
+ },
1955
+ "privacy": "public",
1956
+ "description": "Sets the default styles for the element instance. When undefined,\nthe element will attempt to resolve default styles from\nthe associated presentation or custom element definition.",
1957
+ "inheritedFrom": {
1958
+ "name": "FoundationElement",
1959
+ "module": "src/foundation-element/foundation-element.ts"
1960
+ }
1961
+ },
1962
+ {
1963
+ "kind": "method",
1964
+ "name": "stylesChanged",
1965
+ "privacy": "protected",
1966
+ "return": {
1967
+ "type": {
1968
+ "text": "void"
1969
+ }
1970
+ },
1971
+ "inheritedFrom": {
1972
+ "name": "FoundationElement",
1973
+ "module": "src/foundation-element/foundation-element.ts"
1974
+ }
1975
+ },
1976
+ {
1977
+ "kind": "method",
1978
+ "name": "compose",
1979
+ "privacy": "public",
1980
+ "static": true,
1981
+ "return": {
1982
+ "type": {
1983
+ "text": "(\n overrideDefinition?: OverrideFoundationElementDefinition<T>\n ) => FoundationElementRegistry<T, K>"
1984
+ }
1985
+ },
1986
+ "parameters": [
1987
+ {
1988
+ "name": "this",
1989
+ "type": {
1990
+ "text": "K"
1991
+ }
1992
+ },
1993
+ {
1994
+ "name": "elementDefinition",
1995
+ "type": {
1996
+ "text": "T"
1997
+ },
1998
+ "description": "The definition of the element to create the registry\nfunction for."
1999
+ }
2000
+ ],
2001
+ "description": "Defines an element registry function with a set of element definition defaults.",
2002
+ "inheritedFrom": {
2003
+ "name": "FoundationElement",
2004
+ "module": "src/foundation-element/foundation-element.ts"
2005
+ }
2006
+ }
2007
+ ],
2008
+ "attributes": [
2009
+ {
2010
+ "name": "size",
2011
+ "type": {
2012
+ "text": "string"
2013
+ },
2014
+ "description": "optional string describing the size of the new item (see the written documentation for more info)",
2015
+ "fieldName": "size"
2016
+ },
2017
+ {
2018
+ "name": "type",
2019
+ "type": {
2020
+ "text": "LayoutRegionType"
2021
+ },
2022
+ "default": "defaultLayoutType",
2023
+ "description": "Defines the LayoutRegionType| type of the region.\nDefaults to `horizontal`.",
2024
+ "resolveInitializer": {
2025
+ "module": "src/main/layout-region.ts"
2026
+ },
2027
+ "fieldName": "type"
2028
+ }
2029
+ ],
2030
+ "superclass": {
2031
+ "name": "FoundationElement",
2032
+ "package": "@microsoft/fast-foundation"
2033
+ },
2034
+ "tagName": "%%prefix%%-layout-region",
2035
+ "customElement": true
2036
2036
  }
2037
2037
  ],
2038
2038
  "exports": [
2039
2039
  {
2040
2040
  "kind": "js",
2041
- "name": "layoutStyles",
2041
+ "name": "FoundationLayoutRegion",
2042
2042
  "declaration": {
2043
- "name": "layoutStyles",
2044
- "module": "src/styles/layout.styles.ts"
2043
+ "name": "FoundationLayoutRegion",
2044
+ "module": "src/main/layout-region.ts"
2045
2045
  }
2046
2046
  }
2047
2047
  ]