@seatsio/seatsio-react 14.3.0 → 14.5.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.
- package/build/Embeddable.d.mts +8 -7
- package/build/Embeddable.d.ts +8 -7
- package/build/Embeddable.js +27 -27
- package/build/Embeddable.js.map +1 -1
- package/build/Embeddable.mjs +27 -27
- package/build/Embeddable.mjs.map +1 -1
- package/build/SeatsioDesigner.js +27 -27
- package/build/SeatsioDesigner.js.map +1 -1
- package/build/SeatsioDesigner.mjs +27 -27
- package/build/SeatsioDesigner.mjs.map +1 -1
- package/build/SeatsioEventManager.js +27 -27
- package/build/SeatsioEventManager.js.map +1 -1
- package/build/SeatsioEventManager.mjs +27 -27
- package/build/SeatsioEventManager.mjs.map +1 -1
- package/build/SeatsioSeatingChart.js +27 -27
- package/build/SeatsioSeatingChart.js.map +1 -1
- package/build/SeatsioSeatingChart.mjs +27 -27
- package/build/SeatsioSeatingChart.mjs.map +1 -1
- package/build/index.d.mts +1 -1
- package/build/index.d.ts +1 -1
- package/build/index.js +27 -27
- package/build/index.js.map +1 -1
- package/build/index.mjs +27 -27
- package/build/index.mjs.map +1 -1
- package/package.json +7 -7
|
@@ -57,24 +57,29 @@ var didPropsChange = (prevProps, nextProps) => {
|
|
|
57
57
|
};
|
|
58
58
|
|
|
59
59
|
// src/main/Embeddable.tsx
|
|
60
|
-
var
|
|
60
|
+
var _Embeddable = class _Embeddable extends React.Component {
|
|
61
61
|
constructor(props) {
|
|
62
62
|
super(props);
|
|
63
63
|
this.container = React.createRef();
|
|
64
|
+
this.firstRender = true;
|
|
64
65
|
}
|
|
65
|
-
|
|
66
|
-
if (!this.
|
|
67
|
-
this.
|
|
66
|
+
componentDidMount() {
|
|
67
|
+
if (!_Embeddable.seatsioBundles[this.getChartUrl()] || this.firstRender) {
|
|
68
|
+
this.createAndRenderChart();
|
|
69
|
+
this.firstRender = false;
|
|
68
70
|
}
|
|
69
71
|
}
|
|
70
|
-
|
|
72
|
+
componentDidUpdate(prevProps) {
|
|
71
73
|
if (didPropsChange(this.props, prevProps) && this.chart) {
|
|
72
74
|
this.destroyChart();
|
|
73
75
|
this.createAndRenderChart();
|
|
74
76
|
}
|
|
75
77
|
}
|
|
78
|
+
getChartUrl() {
|
|
79
|
+
return this.props.chartJsUrl.replace("{region}", this.props.region);
|
|
80
|
+
}
|
|
76
81
|
async createAndRenderChart() {
|
|
77
|
-
const seatsio2 = await this.
|
|
82
|
+
const seatsio2 = await this.loadSeatsio();
|
|
78
83
|
const config = this.extractConfigFromProps();
|
|
79
84
|
config.container = this.container.current;
|
|
80
85
|
this.chart = this.createChart(seatsio2, config).render();
|
|
@@ -94,35 +99,30 @@ var Embeddable = class extends React.Component {
|
|
|
94
99
|
this.chart.destroy();
|
|
95
100
|
}
|
|
96
101
|
}
|
|
97
|
-
getSeatsio() {
|
|
98
|
-
if (typeof seatsio === "undefined") {
|
|
99
|
-
return this.loadSeatsio();
|
|
100
|
-
} else if (seatsio.region !== this.props.region) {
|
|
101
|
-
seatsio = void 0;
|
|
102
|
-
return this.loadSeatsio();
|
|
103
|
-
} else {
|
|
104
|
-
return Promise.resolve(seatsio);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
102
|
loadSeatsio() {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
103
|
+
const chartUrl = this.getChartUrl();
|
|
104
|
+
if (!_Embeddable.seatsioBundles[chartUrl]) {
|
|
105
|
+
_Embeddable.seatsioBundles[chartUrl] = new Promise((resolve, reject) => {
|
|
106
|
+
const script = document.head.appendChild(document.createElement("script"));
|
|
107
|
+
window.seatsio = void 0;
|
|
108
|
+
script.onload = () => {
|
|
109
|
+
resolve(seatsio);
|
|
110
|
+
};
|
|
111
|
+
script.onerror = () => reject(`Could not load ${script.src}`);
|
|
112
|
+
script.src = chartUrl;
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
return _Embeddable.seatsioBundles[chartUrl];
|
|
118
116
|
}
|
|
119
117
|
render() {
|
|
120
118
|
return /* @__PURE__ */ React.createElement("div", { ref: this.container, style: { "height": "100%", "width": "100%" } });
|
|
121
119
|
}
|
|
122
120
|
};
|
|
123
|
-
|
|
121
|
+
_Embeddable.seatsioBundles = {};
|
|
122
|
+
_Embeddable.defaultProps = {
|
|
124
123
|
chartJsUrl: "https://cdn-{region}.seatsio.net/chart.js"
|
|
125
124
|
};
|
|
125
|
+
var Embeddable = _Embeddable;
|
|
126
126
|
|
|
127
127
|
// src/main/SeatsioEventManager.tsx
|
|
128
128
|
var SeatsioEventManager = class extends Embeddable {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main/SeatsioEventManager.tsx","../src/main/Embeddable.tsx","../src/main/util.ts"],"sourcesContent":["import { EventManagerConfigOptions, Seatsio } from '@seatsio/seatsio-types'\nimport Embeddable from './Embeddable'\n\nexport default class SeatsioEventManager extends Embeddable<EventManagerConfigOptions> {\n createChart (seatsio: Seatsio, config: EventManagerConfigOptions) {\n return new seatsio.EventManager(config)\n }\n}","import * as React from 'react'\nimport {didPropsChange} from './util'\nimport { ChartDesigner, CommonConfigOptions, EventManager, Region, SeatingChart, Seatsio } from '@seatsio/seatsio-types'\n\nexport type EmbeddableProps<T> = {\n onRenderStarted?: (chart: SeatingChart) => void\n chartJsUrl?: string\n region: Region\n} & T\n\nexport default abstract class Embeddable<T extends CommonConfigOptions> extends React.Component<EmbeddableProps<T>> {\n private container: React.RefObject<HTMLDivElement>\n private
|
|
1
|
+
{"version":3,"sources":["../src/main/SeatsioEventManager.tsx","../src/main/Embeddable.tsx","../src/main/util.ts"],"sourcesContent":["import { EventManagerConfigOptions, Seatsio } from '@seatsio/seatsio-types'\nimport Embeddable from './Embeddable'\n\nexport default class SeatsioEventManager extends Embeddable<EventManagerConfigOptions> {\n createChart (seatsio: Seatsio, config: EventManagerConfigOptions) {\n return new seatsio.EventManager(config)\n }\n}","import * as React from 'react'\nimport {didPropsChange} from './util'\nimport { ChartDesigner, CommonConfigOptions, EventManager, Region, SeatingChart, Seatsio } from '@seatsio/seatsio-types'\n\nexport type EmbeddableProps<T > = {\n onRenderStarted?: (chart: SeatingChart | EventManager) => void\n chartJsUrl?: string\n region: Region\n} & T\n\nexport default abstract class Embeddable<T extends CommonConfigOptions> extends React.Component<EmbeddableProps<T>> {\n private container: React.RefObject<HTMLDivElement>\n private chart: SeatingChart\n private firstRender: boolean\n\n private static seatsioBundles: { [key: string]: Promise<Seatsio> } = {}\n\n static defaultProps = {\n chartJsUrl: 'https://cdn-{region}.seatsio.net/chart.js'\n }\n\n constructor(props: EmbeddableProps<T>) {\n super(props);\n this.container = React.createRef()\n this.firstRender = true\n }\n\n abstract createChart (seatsio: Seatsio, config: T): SeatingChart | EventManager | ChartDesigner\n\n componentDidMount () {\n if (!Embeddable.seatsioBundles[this.getChartUrl()] || this.firstRender) {\n this.createAndRenderChart()\n this.firstRender = false\n }\n }\n\n componentDidUpdate (prevProps: EmbeddableProps<T>) {\n if (didPropsChange(this.props, prevProps) && this.chart) {\n this.destroyChart()\n this.createAndRenderChart()\n }\n }\n\n getChartUrl () {\n return this.props.chartJsUrl.replace('{region}', this.props.region)\n }\n\n async createAndRenderChart () {\n const seatsio = await this.loadSeatsio()\n const config = this.extractConfigFromProps()\n config.container = this.container.current\n this.chart = this.createChart(seatsio, config).render()\n if (this.props.onRenderStarted) {\n this.props.onRenderStarted(this.chart)\n }\n }\n\n extractConfigFromProps (): any {\n let { chartJsUrl, divId, onRenderStarted, region, ...config } = this.props\n return config\n }\n\n componentWillUnmount () {\n this.destroyChart()\n }\n\n destroyChart () {\n if (this.chart && (this.chart as any).state !== 'DESTROYED') {\n this.chart.destroy()\n }\n }\n\n loadSeatsio (): Promise<Seatsio> {\n const chartUrl = this.getChartUrl()\n if (!Embeddable.seatsioBundles[chartUrl]) {\n Embeddable.seatsioBundles[chartUrl] = new Promise<Seatsio>((resolve, reject) => {\n const script = document.head.appendChild(document.createElement('script'))\n // Seatsio global is not replaced if already present, which would cause the wrong region bundle to resolve when changing region\n window.seatsio = undefined\n script.onload = () => {\n resolve(seatsio)\n }\n script.onerror = () => reject(`Could not load ${script.src}`)\n script.src = chartUrl\n })\n }\n\n return Embeddable.seatsioBundles[chartUrl]\n }\n\n render (): React.ReactNode {\n return (\n <div ref={this.container as unknown as React.RefObject<HTMLDivElement>} style={{'height': '100%', 'width': '100%'}} />\n )\n }\n}","import { BoothProps, GeneralAdmissionAreaProps, InteractiveObjectProps, InteractiveSectionProps, SeatProps, SelectableObjectProps, TableProps } from \"@seatsio/seatsio-types\"\n\nexport const didPropsChange = <P extends { [key: string]: any}>(prevProps: P, nextProps: P): boolean => {\n if (Object.keys(prevProps).length !== Object.keys(nextProps).length) {\n return true\n }\n return Object.keys(nextProps).some((propName: string) => {\n let prevValue = prevProps[propName]\n let nextValue = nextProps[propName]\n if (prevValue && nextValue) {\n if (typeof prevValue === 'function' && typeof nextValue === 'function') {\n return prevValue.toString() !== nextValue.toString()\n }\n if (typeof prevValue === 'object' && typeof nextValue === 'object') {\n return didPropsChange(prevValue, nextValue)\n }\n }\n return prevValue !== nextValue\n })\n}\n\nexport const isSeat = (obj: SelectableObjectProps): obj is SeatProps => obj.objectType === 'Seat'\nexport const isTable = (obj: SelectableObjectProps): obj is TableProps => obj.objectType === 'Table'\nexport const isSection = (obj: SelectableObjectProps): obj is InteractiveSectionProps => obj.objectType === 'section'\nexport const isBooth = (obj: SelectableObjectProps): obj is BoothProps => obj.objectType === 'Booth'\nexport const isGeneralAdmission = (obj: SelectableObjectProps): obj is GeneralAdmissionAreaProps => obj.objectType === 'GeneralAdmissionArea'"],"mappings":"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","names":["seatsio","seatsio"]}
|
|
@@ -22,24 +22,29 @@ var didPropsChange = (prevProps, nextProps) => {
|
|
|
22
22
|
};
|
|
23
23
|
|
|
24
24
|
// src/main/Embeddable.tsx
|
|
25
|
-
var
|
|
25
|
+
var _Embeddable = class _Embeddable extends React.Component {
|
|
26
26
|
constructor(props) {
|
|
27
27
|
super(props);
|
|
28
28
|
this.container = React.createRef();
|
|
29
|
+
this.firstRender = true;
|
|
29
30
|
}
|
|
30
|
-
|
|
31
|
-
if (!this.
|
|
32
|
-
this.
|
|
31
|
+
componentDidMount() {
|
|
32
|
+
if (!_Embeddable.seatsioBundles[this.getChartUrl()] || this.firstRender) {
|
|
33
|
+
this.createAndRenderChart();
|
|
34
|
+
this.firstRender = false;
|
|
33
35
|
}
|
|
34
36
|
}
|
|
35
|
-
|
|
37
|
+
componentDidUpdate(prevProps) {
|
|
36
38
|
if (didPropsChange(this.props, prevProps) && this.chart) {
|
|
37
39
|
this.destroyChart();
|
|
38
40
|
this.createAndRenderChart();
|
|
39
41
|
}
|
|
40
42
|
}
|
|
43
|
+
getChartUrl() {
|
|
44
|
+
return this.props.chartJsUrl.replace("{region}", this.props.region);
|
|
45
|
+
}
|
|
41
46
|
async createAndRenderChart() {
|
|
42
|
-
const seatsio2 = await this.
|
|
47
|
+
const seatsio2 = await this.loadSeatsio();
|
|
43
48
|
const config = this.extractConfigFromProps();
|
|
44
49
|
config.container = this.container.current;
|
|
45
50
|
this.chart = this.createChart(seatsio2, config).render();
|
|
@@ -59,35 +64,30 @@ var Embeddable = class extends React.Component {
|
|
|
59
64
|
this.chart.destroy();
|
|
60
65
|
}
|
|
61
66
|
}
|
|
62
|
-
getSeatsio() {
|
|
63
|
-
if (typeof seatsio === "undefined") {
|
|
64
|
-
return this.loadSeatsio();
|
|
65
|
-
} else if (seatsio.region !== this.props.region) {
|
|
66
|
-
seatsio = void 0;
|
|
67
|
-
return this.loadSeatsio();
|
|
68
|
-
} else {
|
|
69
|
-
return Promise.resolve(seatsio);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
67
|
loadSeatsio() {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
68
|
+
const chartUrl = this.getChartUrl();
|
|
69
|
+
if (!_Embeddable.seatsioBundles[chartUrl]) {
|
|
70
|
+
_Embeddable.seatsioBundles[chartUrl] = new Promise((resolve, reject) => {
|
|
71
|
+
const script = document.head.appendChild(document.createElement("script"));
|
|
72
|
+
window.seatsio = void 0;
|
|
73
|
+
script.onload = () => {
|
|
74
|
+
resolve(seatsio);
|
|
75
|
+
};
|
|
76
|
+
script.onerror = () => reject(`Could not load ${script.src}`);
|
|
77
|
+
script.src = chartUrl;
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
return _Embeddable.seatsioBundles[chartUrl];
|
|
83
81
|
}
|
|
84
82
|
render() {
|
|
85
83
|
return /* @__PURE__ */ React.createElement("div", { ref: this.container, style: { "height": "100%", "width": "100%" } });
|
|
86
84
|
}
|
|
87
85
|
};
|
|
88
|
-
|
|
86
|
+
_Embeddable.seatsioBundles = {};
|
|
87
|
+
_Embeddable.defaultProps = {
|
|
89
88
|
chartJsUrl: "https://cdn-{region}.seatsio.net/chart.js"
|
|
90
89
|
};
|
|
90
|
+
var Embeddable = _Embeddable;
|
|
91
91
|
|
|
92
92
|
// src/main/SeatsioEventManager.tsx
|
|
93
93
|
var SeatsioEventManager = class extends Embeddable {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main/Embeddable.tsx","../src/main/util.ts","../src/main/SeatsioEventManager.tsx"],"sourcesContent":["import * as React from 'react'\nimport {didPropsChange} from './util'\nimport { ChartDesigner, CommonConfigOptions, EventManager, Region, SeatingChart, Seatsio } from '@seatsio/seatsio-types'\n\nexport type EmbeddableProps<T> = {\n onRenderStarted?: (chart: SeatingChart) => void\n chartJsUrl?: string\n region: Region\n} & T\n\nexport default abstract class Embeddable<T extends CommonConfigOptions> extends React.Component<EmbeddableProps<T>> {\n private container: React.RefObject<HTMLDivElement>\n private
|
|
1
|
+
{"version":3,"sources":["../src/main/Embeddable.tsx","../src/main/util.ts","../src/main/SeatsioEventManager.tsx"],"sourcesContent":["import * as React from 'react'\nimport {didPropsChange} from './util'\nimport { ChartDesigner, CommonConfigOptions, EventManager, Region, SeatingChart, Seatsio } from '@seatsio/seatsio-types'\n\nexport type EmbeddableProps<T > = {\n onRenderStarted?: (chart: SeatingChart | EventManager) => void\n chartJsUrl?: string\n region: Region\n} & T\n\nexport default abstract class Embeddable<T extends CommonConfigOptions> extends React.Component<EmbeddableProps<T>> {\n private container: React.RefObject<HTMLDivElement>\n private chart: SeatingChart\n private firstRender: boolean\n\n private static seatsioBundles: { [key: string]: Promise<Seatsio> } = {}\n\n static defaultProps = {\n chartJsUrl: 'https://cdn-{region}.seatsio.net/chart.js'\n }\n\n constructor(props: EmbeddableProps<T>) {\n super(props);\n this.container = React.createRef()\n this.firstRender = true\n }\n\n abstract createChart (seatsio: Seatsio, config: T): SeatingChart | EventManager | ChartDesigner\n\n componentDidMount () {\n if (!Embeddable.seatsioBundles[this.getChartUrl()] || this.firstRender) {\n this.createAndRenderChart()\n this.firstRender = false\n }\n }\n\n componentDidUpdate (prevProps: EmbeddableProps<T>) {\n if (didPropsChange(this.props, prevProps) && this.chart) {\n this.destroyChart()\n this.createAndRenderChart()\n }\n }\n\n getChartUrl () {\n return this.props.chartJsUrl.replace('{region}', this.props.region)\n }\n\n async createAndRenderChart () {\n const seatsio = await this.loadSeatsio()\n const config = this.extractConfigFromProps()\n config.container = this.container.current\n this.chart = this.createChart(seatsio, config).render()\n if (this.props.onRenderStarted) {\n this.props.onRenderStarted(this.chart)\n }\n }\n\n extractConfigFromProps (): any {\n let { chartJsUrl, divId, onRenderStarted, region, ...config } = this.props\n return config\n }\n\n componentWillUnmount () {\n this.destroyChart()\n }\n\n destroyChart () {\n if (this.chart && (this.chart as any).state !== 'DESTROYED') {\n this.chart.destroy()\n }\n }\n\n loadSeatsio (): Promise<Seatsio> {\n const chartUrl = this.getChartUrl()\n if (!Embeddable.seatsioBundles[chartUrl]) {\n Embeddable.seatsioBundles[chartUrl] = new Promise<Seatsio>((resolve, reject) => {\n const script = document.head.appendChild(document.createElement('script'))\n // Seatsio global is not replaced if already present, which would cause the wrong region bundle to resolve when changing region\n window.seatsio = undefined\n script.onload = () => {\n resolve(seatsio)\n }\n script.onerror = () => reject(`Could not load ${script.src}`)\n script.src = chartUrl\n })\n }\n\n return Embeddable.seatsioBundles[chartUrl]\n }\n\n render (): React.ReactNode {\n return (\n <div ref={this.container as unknown as React.RefObject<HTMLDivElement>} style={{'height': '100%', 'width': '100%'}} />\n )\n }\n}","import { BoothProps, GeneralAdmissionAreaProps, InteractiveObjectProps, InteractiveSectionProps, SeatProps, SelectableObjectProps, TableProps } from \"@seatsio/seatsio-types\"\n\nexport const didPropsChange = <P extends { [key: string]: any}>(prevProps: P, nextProps: P): boolean => {\n if (Object.keys(prevProps).length !== Object.keys(nextProps).length) {\n return true\n }\n return Object.keys(nextProps).some((propName: string) => {\n let prevValue = prevProps[propName]\n let nextValue = nextProps[propName]\n if (prevValue && nextValue) {\n if (typeof prevValue === 'function' && typeof nextValue === 'function') {\n return prevValue.toString() !== nextValue.toString()\n }\n if (typeof prevValue === 'object' && typeof nextValue === 'object') {\n return didPropsChange(prevValue, nextValue)\n }\n }\n return prevValue !== nextValue\n })\n}\n\nexport const isSeat = (obj: SelectableObjectProps): obj is SeatProps => obj.objectType === 'Seat'\nexport const isTable = (obj: SelectableObjectProps): obj is TableProps => obj.objectType === 'Table'\nexport const isSection = (obj: SelectableObjectProps): obj is InteractiveSectionProps => obj.objectType === 'section'\nexport const isBooth = (obj: SelectableObjectProps): obj is BoothProps => obj.objectType === 'Booth'\nexport const isGeneralAdmission = (obj: SelectableObjectProps): obj is GeneralAdmissionAreaProps => obj.objectType === 'GeneralAdmissionArea'","import { EventManagerConfigOptions, Seatsio } from '@seatsio/seatsio-types'\nimport Embeddable from './Embeddable'\n\nexport default class SeatsioEventManager extends Embeddable<EventManagerConfigOptions> {\n createChart (seatsio: Seatsio, config: EventManagerConfigOptions) {\n return new seatsio.EventManager(config)\n }\n}"],"mappings":"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","names":["seatsio","seatsio"]}
|
|
@@ -57,24 +57,29 @@ var didPropsChange = (prevProps, nextProps) => {
|
|
|
57
57
|
};
|
|
58
58
|
|
|
59
59
|
// src/main/Embeddable.tsx
|
|
60
|
-
var
|
|
60
|
+
var _Embeddable = class _Embeddable extends React.Component {
|
|
61
61
|
constructor(props) {
|
|
62
62
|
super(props);
|
|
63
63
|
this.container = React.createRef();
|
|
64
|
+
this.firstRender = true;
|
|
64
65
|
}
|
|
65
|
-
|
|
66
|
-
if (!this.
|
|
67
|
-
this.
|
|
66
|
+
componentDidMount() {
|
|
67
|
+
if (!_Embeddable.seatsioBundles[this.getChartUrl()] || this.firstRender) {
|
|
68
|
+
this.createAndRenderChart();
|
|
69
|
+
this.firstRender = false;
|
|
68
70
|
}
|
|
69
71
|
}
|
|
70
|
-
|
|
72
|
+
componentDidUpdate(prevProps) {
|
|
71
73
|
if (didPropsChange(this.props, prevProps) && this.chart) {
|
|
72
74
|
this.destroyChart();
|
|
73
75
|
this.createAndRenderChart();
|
|
74
76
|
}
|
|
75
77
|
}
|
|
78
|
+
getChartUrl() {
|
|
79
|
+
return this.props.chartJsUrl.replace("{region}", this.props.region);
|
|
80
|
+
}
|
|
76
81
|
async createAndRenderChart() {
|
|
77
|
-
const seatsio2 = await this.
|
|
82
|
+
const seatsio2 = await this.loadSeatsio();
|
|
78
83
|
const config = this.extractConfigFromProps();
|
|
79
84
|
config.container = this.container.current;
|
|
80
85
|
this.chart = this.createChart(seatsio2, config).render();
|
|
@@ -94,35 +99,30 @@ var Embeddable = class extends React.Component {
|
|
|
94
99
|
this.chart.destroy();
|
|
95
100
|
}
|
|
96
101
|
}
|
|
97
|
-
getSeatsio() {
|
|
98
|
-
if (typeof seatsio === "undefined") {
|
|
99
|
-
return this.loadSeatsio();
|
|
100
|
-
} else if (seatsio.region !== this.props.region) {
|
|
101
|
-
seatsio = void 0;
|
|
102
|
-
return this.loadSeatsio();
|
|
103
|
-
} else {
|
|
104
|
-
return Promise.resolve(seatsio);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
102
|
loadSeatsio() {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
103
|
+
const chartUrl = this.getChartUrl();
|
|
104
|
+
if (!_Embeddable.seatsioBundles[chartUrl]) {
|
|
105
|
+
_Embeddable.seatsioBundles[chartUrl] = new Promise((resolve, reject) => {
|
|
106
|
+
const script = document.head.appendChild(document.createElement("script"));
|
|
107
|
+
window.seatsio = void 0;
|
|
108
|
+
script.onload = () => {
|
|
109
|
+
resolve(seatsio);
|
|
110
|
+
};
|
|
111
|
+
script.onerror = () => reject(`Could not load ${script.src}`);
|
|
112
|
+
script.src = chartUrl;
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
return _Embeddable.seatsioBundles[chartUrl];
|
|
118
116
|
}
|
|
119
117
|
render() {
|
|
120
118
|
return /* @__PURE__ */ React.createElement("div", { ref: this.container, style: { "height": "100%", "width": "100%" } });
|
|
121
119
|
}
|
|
122
120
|
};
|
|
123
|
-
|
|
121
|
+
_Embeddable.seatsioBundles = {};
|
|
122
|
+
_Embeddable.defaultProps = {
|
|
124
123
|
chartJsUrl: "https://cdn-{region}.seatsio.net/chart.js"
|
|
125
124
|
};
|
|
125
|
+
var Embeddable = _Embeddable;
|
|
126
126
|
|
|
127
127
|
// src/main/SeatsioSeatingChart.tsx
|
|
128
128
|
var SeatsioSeatingChart = class extends Embeddable {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main/SeatsioSeatingChart.tsx","../src/main/Embeddable.tsx","../src/main/util.ts"],"sourcesContent":["import { ChartRendererConfigOptions, Seatsio } from '@seatsio/seatsio-types'\nimport Embeddable from './Embeddable'\n\nexport default class SeatsioSeatingChart extends Embeddable<ChartRendererConfigOptions> {\n createChart (seatsio: Seatsio, config: ChartRendererConfigOptions) {\n return new seatsio.SeatingChart(config)\n }\n}","import * as React from 'react'\nimport {didPropsChange} from './util'\nimport { ChartDesigner, CommonConfigOptions, EventManager, Region, SeatingChart, Seatsio } from '@seatsio/seatsio-types'\n\nexport type EmbeddableProps<T> = {\n onRenderStarted?: (chart: SeatingChart) => void\n chartJsUrl?: string\n region: Region\n} & T\n\nexport default abstract class Embeddable<T extends CommonConfigOptions> extends React.Component<EmbeddableProps<T>> {\n private container: React.RefObject<HTMLDivElement>\n private
|
|
1
|
+
{"version":3,"sources":["../src/main/SeatsioSeatingChart.tsx","../src/main/Embeddable.tsx","../src/main/util.ts"],"sourcesContent":["import { ChartRendererConfigOptions, Seatsio } from '@seatsio/seatsio-types'\nimport Embeddable from './Embeddable'\n\nexport default class SeatsioSeatingChart extends Embeddable<ChartRendererConfigOptions> {\n createChart (seatsio: Seatsio, config: ChartRendererConfigOptions) {\n return new seatsio.SeatingChart(config)\n }\n}","import * as React from 'react'\nimport {didPropsChange} from './util'\nimport { ChartDesigner, CommonConfigOptions, EventManager, Region, SeatingChart, Seatsio } from '@seatsio/seatsio-types'\n\nexport type EmbeddableProps<T > = {\n onRenderStarted?: (chart: SeatingChart | EventManager) => void\n chartJsUrl?: string\n region: Region\n} & T\n\nexport default abstract class Embeddable<T extends CommonConfigOptions> extends React.Component<EmbeddableProps<T>> {\n private container: React.RefObject<HTMLDivElement>\n private chart: SeatingChart\n private firstRender: boolean\n\n private static seatsioBundles: { [key: string]: Promise<Seatsio> } = {}\n\n static defaultProps = {\n chartJsUrl: 'https://cdn-{region}.seatsio.net/chart.js'\n }\n\n constructor(props: EmbeddableProps<T>) {\n super(props);\n this.container = React.createRef()\n this.firstRender = true\n }\n\n abstract createChart (seatsio: Seatsio, config: T): SeatingChart | EventManager | ChartDesigner\n\n componentDidMount () {\n if (!Embeddable.seatsioBundles[this.getChartUrl()] || this.firstRender) {\n this.createAndRenderChart()\n this.firstRender = false\n }\n }\n\n componentDidUpdate (prevProps: EmbeddableProps<T>) {\n if (didPropsChange(this.props, prevProps) && this.chart) {\n this.destroyChart()\n this.createAndRenderChart()\n }\n }\n\n getChartUrl () {\n return this.props.chartJsUrl.replace('{region}', this.props.region)\n }\n\n async createAndRenderChart () {\n const seatsio = await this.loadSeatsio()\n const config = this.extractConfigFromProps()\n config.container = this.container.current\n this.chart = this.createChart(seatsio, config).render()\n if (this.props.onRenderStarted) {\n this.props.onRenderStarted(this.chart)\n }\n }\n\n extractConfigFromProps (): any {\n let { chartJsUrl, divId, onRenderStarted, region, ...config } = this.props\n return config\n }\n\n componentWillUnmount () {\n this.destroyChart()\n }\n\n destroyChart () {\n if (this.chart && (this.chart as any).state !== 'DESTROYED') {\n this.chart.destroy()\n }\n }\n\n loadSeatsio (): Promise<Seatsio> {\n const chartUrl = this.getChartUrl()\n if (!Embeddable.seatsioBundles[chartUrl]) {\n Embeddable.seatsioBundles[chartUrl] = new Promise<Seatsio>((resolve, reject) => {\n const script = document.head.appendChild(document.createElement('script'))\n // Seatsio global is not replaced if already present, which would cause the wrong region bundle to resolve when changing region\n window.seatsio = undefined\n script.onload = () => {\n resolve(seatsio)\n }\n script.onerror = () => reject(`Could not load ${script.src}`)\n script.src = chartUrl\n })\n }\n\n return Embeddable.seatsioBundles[chartUrl]\n }\n\n render (): React.ReactNode {\n return (\n <div ref={this.container as unknown as React.RefObject<HTMLDivElement>} style={{'height': '100%', 'width': '100%'}} />\n )\n }\n}","import { BoothProps, GeneralAdmissionAreaProps, InteractiveObjectProps, InteractiveSectionProps, SeatProps, SelectableObjectProps, TableProps } from \"@seatsio/seatsio-types\"\n\nexport const didPropsChange = <P extends { [key: string]: any}>(prevProps: P, nextProps: P): boolean => {\n if (Object.keys(prevProps).length !== Object.keys(nextProps).length) {\n return true\n }\n return Object.keys(nextProps).some((propName: string) => {\n let prevValue = prevProps[propName]\n let nextValue = nextProps[propName]\n if (prevValue && nextValue) {\n if (typeof prevValue === 'function' && typeof nextValue === 'function') {\n return prevValue.toString() !== nextValue.toString()\n }\n if (typeof prevValue === 'object' && typeof nextValue === 'object') {\n return didPropsChange(prevValue, nextValue)\n }\n }\n return prevValue !== nextValue\n })\n}\n\nexport const isSeat = (obj: SelectableObjectProps): obj is SeatProps => obj.objectType === 'Seat'\nexport const isTable = (obj: SelectableObjectProps): obj is TableProps => obj.objectType === 'Table'\nexport const isSection = (obj: SelectableObjectProps): obj is InteractiveSectionProps => obj.objectType === 'section'\nexport const isBooth = (obj: SelectableObjectProps): obj is BoothProps => obj.objectType === 'Booth'\nexport const isGeneralAdmission = (obj: SelectableObjectProps): obj is GeneralAdmissionAreaProps => obj.objectType === 'GeneralAdmissionArea'"],"mappings":"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","names":["seatsio","seatsio"]}
|
|
@@ -22,24 +22,29 @@ var didPropsChange = (prevProps, nextProps) => {
|
|
|
22
22
|
};
|
|
23
23
|
|
|
24
24
|
// src/main/Embeddable.tsx
|
|
25
|
-
var
|
|
25
|
+
var _Embeddable = class _Embeddable extends React.Component {
|
|
26
26
|
constructor(props) {
|
|
27
27
|
super(props);
|
|
28
28
|
this.container = React.createRef();
|
|
29
|
+
this.firstRender = true;
|
|
29
30
|
}
|
|
30
|
-
|
|
31
|
-
if (!this.
|
|
32
|
-
this.
|
|
31
|
+
componentDidMount() {
|
|
32
|
+
if (!_Embeddable.seatsioBundles[this.getChartUrl()] || this.firstRender) {
|
|
33
|
+
this.createAndRenderChart();
|
|
34
|
+
this.firstRender = false;
|
|
33
35
|
}
|
|
34
36
|
}
|
|
35
|
-
|
|
37
|
+
componentDidUpdate(prevProps) {
|
|
36
38
|
if (didPropsChange(this.props, prevProps) && this.chart) {
|
|
37
39
|
this.destroyChart();
|
|
38
40
|
this.createAndRenderChart();
|
|
39
41
|
}
|
|
40
42
|
}
|
|
43
|
+
getChartUrl() {
|
|
44
|
+
return this.props.chartJsUrl.replace("{region}", this.props.region);
|
|
45
|
+
}
|
|
41
46
|
async createAndRenderChart() {
|
|
42
|
-
const seatsio2 = await this.
|
|
47
|
+
const seatsio2 = await this.loadSeatsio();
|
|
43
48
|
const config = this.extractConfigFromProps();
|
|
44
49
|
config.container = this.container.current;
|
|
45
50
|
this.chart = this.createChart(seatsio2, config).render();
|
|
@@ -59,35 +64,30 @@ var Embeddable = class extends React.Component {
|
|
|
59
64
|
this.chart.destroy();
|
|
60
65
|
}
|
|
61
66
|
}
|
|
62
|
-
getSeatsio() {
|
|
63
|
-
if (typeof seatsio === "undefined") {
|
|
64
|
-
return this.loadSeatsio();
|
|
65
|
-
} else if (seatsio.region !== this.props.region) {
|
|
66
|
-
seatsio = void 0;
|
|
67
|
-
return this.loadSeatsio();
|
|
68
|
-
} else {
|
|
69
|
-
return Promise.resolve(seatsio);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
67
|
loadSeatsio() {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
68
|
+
const chartUrl = this.getChartUrl();
|
|
69
|
+
if (!_Embeddable.seatsioBundles[chartUrl]) {
|
|
70
|
+
_Embeddable.seatsioBundles[chartUrl] = new Promise((resolve, reject) => {
|
|
71
|
+
const script = document.head.appendChild(document.createElement("script"));
|
|
72
|
+
window.seatsio = void 0;
|
|
73
|
+
script.onload = () => {
|
|
74
|
+
resolve(seatsio);
|
|
75
|
+
};
|
|
76
|
+
script.onerror = () => reject(`Could not load ${script.src}`);
|
|
77
|
+
script.src = chartUrl;
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
return _Embeddable.seatsioBundles[chartUrl];
|
|
83
81
|
}
|
|
84
82
|
render() {
|
|
85
83
|
return /* @__PURE__ */ React.createElement("div", { ref: this.container, style: { "height": "100%", "width": "100%" } });
|
|
86
84
|
}
|
|
87
85
|
};
|
|
88
|
-
|
|
86
|
+
_Embeddable.seatsioBundles = {};
|
|
87
|
+
_Embeddable.defaultProps = {
|
|
89
88
|
chartJsUrl: "https://cdn-{region}.seatsio.net/chart.js"
|
|
90
89
|
};
|
|
90
|
+
var Embeddable = _Embeddable;
|
|
91
91
|
|
|
92
92
|
// src/main/SeatsioSeatingChart.tsx
|
|
93
93
|
var SeatsioSeatingChart = class extends Embeddable {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main/Embeddable.tsx","../src/main/util.ts","../src/main/SeatsioSeatingChart.tsx"],"sourcesContent":["import * as React from 'react'\nimport {didPropsChange} from './util'\nimport { ChartDesigner, CommonConfigOptions, EventManager, Region, SeatingChart, Seatsio } from '@seatsio/seatsio-types'\n\nexport type EmbeddableProps<T> = {\n onRenderStarted?: (chart: SeatingChart) => void\n chartJsUrl?: string\n region: Region\n} & T\n\nexport default abstract class Embeddable<T extends CommonConfigOptions> extends React.Component<EmbeddableProps<T>> {\n private container: React.RefObject<HTMLDivElement>\n private
|
|
1
|
+
{"version":3,"sources":["../src/main/Embeddable.tsx","../src/main/util.ts","../src/main/SeatsioSeatingChart.tsx"],"sourcesContent":["import * as React from 'react'\nimport {didPropsChange} from './util'\nimport { ChartDesigner, CommonConfigOptions, EventManager, Region, SeatingChart, Seatsio } from '@seatsio/seatsio-types'\n\nexport type EmbeddableProps<T > = {\n onRenderStarted?: (chart: SeatingChart | EventManager) => void\n chartJsUrl?: string\n region: Region\n} & T\n\nexport default abstract class Embeddable<T extends CommonConfigOptions> extends React.Component<EmbeddableProps<T>> {\n private container: React.RefObject<HTMLDivElement>\n private chart: SeatingChart\n private firstRender: boolean\n\n private static seatsioBundles: { [key: string]: Promise<Seatsio> } = {}\n\n static defaultProps = {\n chartJsUrl: 'https://cdn-{region}.seatsio.net/chart.js'\n }\n\n constructor(props: EmbeddableProps<T>) {\n super(props);\n this.container = React.createRef()\n this.firstRender = true\n }\n\n abstract createChart (seatsio: Seatsio, config: T): SeatingChart | EventManager | ChartDesigner\n\n componentDidMount () {\n if (!Embeddable.seatsioBundles[this.getChartUrl()] || this.firstRender) {\n this.createAndRenderChart()\n this.firstRender = false\n }\n }\n\n componentDidUpdate (prevProps: EmbeddableProps<T>) {\n if (didPropsChange(this.props, prevProps) && this.chart) {\n this.destroyChart()\n this.createAndRenderChart()\n }\n }\n\n getChartUrl () {\n return this.props.chartJsUrl.replace('{region}', this.props.region)\n }\n\n async createAndRenderChart () {\n const seatsio = await this.loadSeatsio()\n const config = this.extractConfigFromProps()\n config.container = this.container.current\n this.chart = this.createChart(seatsio, config).render()\n if (this.props.onRenderStarted) {\n this.props.onRenderStarted(this.chart)\n }\n }\n\n extractConfigFromProps (): any {\n let { chartJsUrl, divId, onRenderStarted, region, ...config } = this.props\n return config\n }\n\n componentWillUnmount () {\n this.destroyChart()\n }\n\n destroyChart () {\n if (this.chart && (this.chart as any).state !== 'DESTROYED') {\n this.chart.destroy()\n }\n }\n\n loadSeatsio (): Promise<Seatsio> {\n const chartUrl = this.getChartUrl()\n if (!Embeddable.seatsioBundles[chartUrl]) {\n Embeddable.seatsioBundles[chartUrl] = new Promise<Seatsio>((resolve, reject) => {\n const script = document.head.appendChild(document.createElement('script'))\n // Seatsio global is not replaced if already present, which would cause the wrong region bundle to resolve when changing region\n window.seatsio = undefined\n script.onload = () => {\n resolve(seatsio)\n }\n script.onerror = () => reject(`Could not load ${script.src}`)\n script.src = chartUrl\n })\n }\n\n return Embeddable.seatsioBundles[chartUrl]\n }\n\n render (): React.ReactNode {\n return (\n <div ref={this.container as unknown as React.RefObject<HTMLDivElement>} style={{'height': '100%', 'width': '100%'}} />\n )\n }\n}","import { BoothProps, GeneralAdmissionAreaProps, InteractiveObjectProps, InteractiveSectionProps, SeatProps, SelectableObjectProps, TableProps } from \"@seatsio/seatsio-types\"\n\nexport const didPropsChange = <P extends { [key: string]: any}>(prevProps: P, nextProps: P): boolean => {\n if (Object.keys(prevProps).length !== Object.keys(nextProps).length) {\n return true\n }\n return Object.keys(nextProps).some((propName: string) => {\n let prevValue = prevProps[propName]\n let nextValue = nextProps[propName]\n if (prevValue && nextValue) {\n if (typeof prevValue === 'function' && typeof nextValue === 'function') {\n return prevValue.toString() !== nextValue.toString()\n }\n if (typeof prevValue === 'object' && typeof nextValue === 'object') {\n return didPropsChange(prevValue, nextValue)\n }\n }\n return prevValue !== nextValue\n })\n}\n\nexport const isSeat = (obj: SelectableObjectProps): obj is SeatProps => obj.objectType === 'Seat'\nexport const isTable = (obj: SelectableObjectProps): obj is TableProps => obj.objectType === 'Table'\nexport const isSection = (obj: SelectableObjectProps): obj is InteractiveSectionProps => obj.objectType === 'section'\nexport const isBooth = (obj: SelectableObjectProps): obj is BoothProps => obj.objectType === 'Booth'\nexport const isGeneralAdmission = (obj: SelectableObjectProps): obj is GeneralAdmissionAreaProps => obj.objectType === 'GeneralAdmissionArea'","import { ChartRendererConfigOptions, Seatsio } from '@seatsio/seatsio-types'\nimport Embeddable from './Embeddable'\n\nexport default class SeatsioSeatingChart extends Embeddable<ChartRendererConfigOptions> {\n createChart (seatsio: Seatsio, config: ChartRendererConfigOptions) {\n return new seatsio.SeatingChart(config)\n }\n}"],"mappings":"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","names":["seatsio","seatsio"]}
|
package/build/index.d.mts
CHANGED
|
@@ -2,6 +2,6 @@ export { default as SeatsioDesigner } from './SeatsioDesigner.mjs';
|
|
|
2
2
|
export { default as SeatsioEventManager } from './SeatsioEventManager.mjs';
|
|
3
3
|
export { default as SeatsioSeatingChart } from './SeatsioSeatingChart.mjs';
|
|
4
4
|
export { isBooth, isGeneralAdmission, isSeat, isSection, isTable } from './util.mjs';
|
|
5
|
-
|
|
5
|
+
import '@seatsio/seatsio-types';
|
|
6
6
|
import './Embeddable.mjs';
|
|
7
7
|
import 'react';
|
package/build/index.d.ts
CHANGED
|
@@ -2,6 +2,6 @@ export { default as SeatsioDesigner } from './SeatsioDesigner.js';
|
|
|
2
2
|
export { default as SeatsioEventManager } from './SeatsioEventManager.js';
|
|
3
3
|
export { default as SeatsioSeatingChart } from './SeatsioSeatingChart.js';
|
|
4
4
|
export { isBooth, isGeneralAdmission, isSeat, isSection, isTable } from './util.js';
|
|
5
|
-
|
|
5
|
+
import '@seatsio/seatsio-types';
|
|
6
6
|
import './Embeddable.js';
|
|
7
7
|
import 'react';
|
package/build/index.js
CHANGED
|
@@ -69,24 +69,29 @@ var isBooth = (obj) => obj.objectType === "Booth";
|
|
|
69
69
|
var isGeneralAdmission = (obj) => obj.objectType === "GeneralAdmissionArea";
|
|
70
70
|
|
|
71
71
|
// src/main/Embeddable.tsx
|
|
72
|
-
var
|
|
72
|
+
var _Embeddable = class _Embeddable extends React.Component {
|
|
73
73
|
constructor(props) {
|
|
74
74
|
super(props);
|
|
75
75
|
this.container = React.createRef();
|
|
76
|
+
this.firstRender = true;
|
|
76
77
|
}
|
|
77
|
-
|
|
78
|
-
if (!this.
|
|
79
|
-
this.
|
|
78
|
+
componentDidMount() {
|
|
79
|
+
if (!_Embeddable.seatsioBundles[this.getChartUrl()] || this.firstRender) {
|
|
80
|
+
this.createAndRenderChart();
|
|
81
|
+
this.firstRender = false;
|
|
80
82
|
}
|
|
81
83
|
}
|
|
82
|
-
|
|
84
|
+
componentDidUpdate(prevProps) {
|
|
83
85
|
if (didPropsChange(this.props, prevProps) && this.chart) {
|
|
84
86
|
this.destroyChart();
|
|
85
87
|
this.createAndRenderChart();
|
|
86
88
|
}
|
|
87
89
|
}
|
|
90
|
+
getChartUrl() {
|
|
91
|
+
return this.props.chartJsUrl.replace("{region}", this.props.region);
|
|
92
|
+
}
|
|
88
93
|
async createAndRenderChart() {
|
|
89
|
-
const seatsio2 = await this.
|
|
94
|
+
const seatsio2 = await this.loadSeatsio();
|
|
90
95
|
const config = this.extractConfigFromProps();
|
|
91
96
|
config.container = this.container.current;
|
|
92
97
|
this.chart = this.createChart(seatsio2, config).render();
|
|
@@ -106,35 +111,30 @@ var Embeddable = class extends React.Component {
|
|
|
106
111
|
this.chart.destroy();
|
|
107
112
|
}
|
|
108
113
|
}
|
|
109
|
-
getSeatsio() {
|
|
110
|
-
if (typeof seatsio === "undefined") {
|
|
111
|
-
return this.loadSeatsio();
|
|
112
|
-
} else if (seatsio.region !== this.props.region) {
|
|
113
|
-
seatsio = void 0;
|
|
114
|
-
return this.loadSeatsio();
|
|
115
|
-
} else {
|
|
116
|
-
return Promise.resolve(seatsio);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
114
|
loadSeatsio() {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
115
|
+
const chartUrl = this.getChartUrl();
|
|
116
|
+
if (!_Embeddable.seatsioBundles[chartUrl]) {
|
|
117
|
+
_Embeddable.seatsioBundles[chartUrl] = new Promise((resolve, reject) => {
|
|
118
|
+
const script = document.head.appendChild(document.createElement("script"));
|
|
119
|
+
window.seatsio = void 0;
|
|
120
|
+
script.onload = () => {
|
|
121
|
+
resolve(seatsio);
|
|
122
|
+
};
|
|
123
|
+
script.onerror = () => reject(`Could not load ${script.src}`);
|
|
124
|
+
script.src = chartUrl;
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
return _Embeddable.seatsioBundles[chartUrl];
|
|
130
128
|
}
|
|
131
129
|
render() {
|
|
132
130
|
return /* @__PURE__ */ React.createElement("div", { ref: this.container, style: { "height": "100%", "width": "100%" } });
|
|
133
131
|
}
|
|
134
132
|
};
|
|
135
|
-
|
|
133
|
+
_Embeddable.seatsioBundles = {};
|
|
134
|
+
_Embeddable.defaultProps = {
|
|
136
135
|
chartJsUrl: "https://cdn-{region}.seatsio.net/chart.js"
|
|
137
136
|
};
|
|
137
|
+
var Embeddable = _Embeddable;
|
|
138
138
|
|
|
139
139
|
// src/main/SeatsioDesigner.tsx
|
|
140
140
|
var SeatsioDesigner = class extends Embeddable {
|