@fmsim/board 0.0.62 → 0.0.63

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 (65) hide show
  1. package/custom-elements.json +2148 -1701
  2. package/dist/src/layers/mcs-mouse-event-layer.d.ts +30 -0
  3. package/dist/src/layers/mcs-mouse-event-layer.js +114 -0
  4. package/dist/src/layers/mcs-mouse-event-layer.js.map +1 -0
  5. package/dist/src/layers/tooltip-decorator.d.ts +2 -0
  6. package/dist/src/layers/tooltip-decorator.js +41 -0
  7. package/dist/src/layers/tooltip-decorator.js.map +1 -0
  8. package/dist/src/ox-board-component-info.d.ts +21 -0
  9. package/dist/src/ox-board-component-info.js +218 -0
  10. package/dist/src/ox-board-component-info.js.map +1 -0
  11. package/dist/src/ox-board-modeller.js +0 -1
  12. package/dist/src/ox-board-modeller.js.map +1 -1
  13. package/dist/src/ox-board-viewer.d.ts +5 -1
  14. package/dist/src/ox-board-viewer.js +49 -3
  15. package/dist/src/ox-board-viewer.js.map +1 -1
  16. package/dist/tsconfig.tsbuildinfo +1 -1
  17. package/package.json +3 -3
  18. package/dist/src/graphql/board.d.ts +0 -6
  19. package/dist/src/graphql/board.js +0 -139
  20. package/dist/src/graphql/board.js.map +0 -1
  21. package/dist/src/graphql/data-subscription.d.ts +0 -5
  22. package/dist/src/graphql/data-subscription.js +0 -24
  23. package/dist/src/graphql/data-subscription.js.map +0 -1
  24. package/dist/src/graphql/favorite-board.d.ts +0 -1
  25. package/dist/src/graphql/favorite-board.js +0 -23
  26. package/dist/src/graphql/favorite-board.js.map +0 -1
  27. package/dist/src/graphql/group.d.ts +0 -7
  28. package/dist/src/graphql/group.js +0 -125
  29. package/dist/src/graphql/group.js.map +0 -1
  30. package/dist/src/graphql/index.d.ts +0 -4
  31. package/dist/src/graphql/index.js +0 -5
  32. package/dist/src/graphql/index.js.map +0 -1
  33. package/dist/src/graphql/play-group.d.ts +0 -8
  34. package/dist/src/graphql/play-group.js +0 -173
  35. package/dist/src/graphql/play-group.js.map +0 -1
  36. package/dist/src/graphql/scenario.d.ts +0 -6
  37. package/dist/src/graphql/scenario.js +0 -69
  38. package/dist/src/graphql/scenario.js.map +0 -1
  39. package/dist/src/layers/bouncing-arrow-decorator.d.ts +0 -1
  40. package/dist/src/layers/bouncing-arrow-decorator.js +0 -40
  41. package/dist/src/layers/bouncing-arrow-decorator.js.map +0 -1
  42. package/dist/src/layers/event-handlers.d.ts +0 -1
  43. package/dist/src/layers/event-handlers.js +0 -70
  44. package/dist/src/layers/event-handlers.js.map +0 -1
  45. package/dist/src/layers/mcs-event-handlers.d.ts +0 -1
  46. package/dist/src/layers/mcs-event-handlers.js +0 -73
  47. package/dist/src/layers/mcs-event-handlers.js.map +0 -1
  48. package/dist/src/layers/ox-mini-map.d.ts +0 -1
  49. package/dist/src/layers/ox-mini-map.js +0 -189
  50. package/dist/src/layers/ox-mini-map.js.map +0 -1
  51. package/dist/src/layers/scroll-layer.d.ts +0 -24
  52. package/dist/src/layers/scroll-layer.js +0 -125
  53. package/dist/src/layers/scroll-layer.js.map +0 -1
  54. package/dist/src/layers/shift-handler.d.ts +0 -1
  55. package/dist/src/layers/shift-handler.js +0 -38
  56. package/dist/src/layers/shift-handler.js.map +0 -1
  57. package/dist/src/layers/zoom-handler.d.ts +0 -1
  58. package/dist/src/layers/zoom-handler.js +0 -36
  59. package/dist/src/layers/zoom-handler.js.map +0 -1
  60. package/dist/src/ox-board-viewer-backup.d.ts +0 -64
  61. package/dist/src/ox-board-viewer-backup.js +0 -529
  62. package/dist/src/ox-board-viewer-backup.js.map +0 -1
  63. package/dist/src/ox-board-viewer-other.d.ts +0 -19
  64. package/dist/src/ox-board-viewer-other.js +0 -82
  65. package/dist/src/ox-board-viewer-other.js.map +0 -1
@@ -1,69 +0,0 @@
1
- import gql from 'graphql-tag';
2
- import { client } from '@operato/graphql';
3
- export const scenarios = async () => {
4
- var response = await client.query({
5
- query: gql `
6
- query {
7
- scenarios {
8
- items {
9
- name
10
- description
11
- }
12
- }
13
- }
14
- `
15
- });
16
- if (response.errors) {
17
- return [];
18
- }
19
- return response.data.scenarios.items;
20
- };
21
- export const startScenario = async (scenarioName, instanceName, variables) => {
22
- var _a, _b;
23
- if (!scenarioName) {
24
- return;
25
- }
26
- if (client) {
27
- var response = await client.query({
28
- query: gql `
29
- mutation ($instanceName: String, $scenarioName: String!, $variables: Object) {
30
- startScenario(instanceName: $instanceName, scenarioName: $scenarioName, variables: $variables) {
31
- state
32
- message
33
- data
34
- }
35
- }
36
- `,
37
- variables: {
38
- instanceName: instanceName,
39
- scenarioName: scenarioName,
40
- variables
41
- }
42
- });
43
- return (_b = (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.startScenario) === null || _b === void 0 ? void 0 : _b.data;
44
- }
45
- };
46
- export const runScenario = async (scenarioName, variables) => {
47
- var _a, _b;
48
- if (!scenarioName)
49
- return;
50
- if (client) {
51
- var response = await client.query({
52
- query: gql `
53
- mutation ($scenarioName: String!, $variables: Object) {
54
- runScenario(scenarioName: $scenarioName, variables: $variables) {
55
- state
56
- message
57
- data
58
- }
59
- }
60
- `,
61
- variables: {
62
- scenarioName: scenarioName,
63
- variables
64
- }
65
- });
66
- return (_b = (_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.runScenario) === null || _b === void 0 ? void 0 : _b.data;
67
- }
68
- };
69
- //# sourceMappingURL=scenario.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scenario.js","sourceRoot":"","sources":["../../../src/graphql/scenario.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,aAAa,CAAA;AAE7B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,IAAsD,EAAE;IACpF,IAAI,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;QAChC,KAAK,EAAE,GAAG,CAAA;;;;;;;;;KAST;KACF,CAAC,CAAA;IAEF,IAAI,QAAQ,CAAC,MAAM,EAAE;QACnB,OAAO,EAAE,CAAA;KACV;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAA;AACtC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,YAAoB,EACpB,YAAoB,EACpB,SAAmC,EACnC,EAAE;;IACF,IAAI,CAAC,YAAY,EAAE;QACjB,OAAM;KACP;IAED,IAAI,MAAM,EAAE;QACV,IAAI,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;YAChC,KAAK,EAAE,GAAG,CAAA;;;;;;;;OAQT;YACD,SAAS,EAAE;gBACT,YAAY,EAAE,YAAY;gBAC1B,YAAY,EAAE,YAAY;gBAC1B,SAAS;aACV;SACF,CAAC,CAAA;QAEF,OAAO,MAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,0CAAE,aAAa,0CAAE,IAAI,CAAA;KAC3C;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,YAAoB,EAAE,SAAmC,EAAE,EAAE;;IAC7F,IAAI,CAAC,YAAY;QAAE,OAAM;IAEzB,IAAI,MAAM,EAAE;QACV,IAAI,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;YAChC,KAAK,EAAE,GAAG,CAAA;;;;;;;;OAQT;YACD,SAAS,EAAE;gBACT,YAAY,EAAE,YAAY;gBAC1B,SAAS;aACV;SACF,CAAC,CAAA;QAEF,OAAO,MAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,0CAAE,WAAW,0CAAE,IAAI,CAAA;KACzC;AACH,CAAC,CAAA","sourcesContent":["import gql from 'graphql-tag'\n\nimport { client } from '@operato/graphql'\n\nexport const scenarios = async (): Promise<{ name: string; description: string }[]> => {\n var response = await client.query({\n query: gql`\n query {\n scenarios {\n items {\n name\n description\n }\n }\n }\n `\n })\n\n if (response.errors) {\n return []\n }\n\n return response.data.scenarios.items\n}\n\nexport const startScenario = async (\n scenarioName: string,\n instanceName: string,\n variables: string | number | object\n) => {\n if (!scenarioName) {\n return\n }\n\n if (client) {\n var response = await client.query({\n query: gql`\n mutation ($instanceName: String, $scenarioName: String!, $variables: Object) {\n startScenario(instanceName: $instanceName, scenarioName: $scenarioName, variables: $variables) {\n state\n message\n data\n }\n }\n `,\n variables: {\n instanceName: instanceName,\n scenarioName: scenarioName,\n variables\n }\n })\n\n return response?.data?.startScenario?.data\n }\n}\n\nexport const runScenario = async (scenarioName: string, variables: string | number | object) => {\n if (!scenarioName) return\n\n if (client) {\n var response = await client.query({\n query: gql`\n mutation ($scenarioName: String!, $variables: Object) {\n runScenario(scenarioName: $scenarioName, variables: $variables) {\n state\n message\n data\n }\n }\n `,\n variables: {\n scenarioName: scenarioName,\n variables\n }\n })\n\n return response?.data?.runScenario?.data\n }\n}\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,40 +0,0 @@
1
- import { Component } from '@hatiolab/things-scene';
2
- function bounce(delta) {
3
- const progress = (1 - delta) * 100;
4
- const round = progress / 10;
5
- const bounce = progress % 10; /* 10회 바운스 */
6
- return bounce < 5 ? bounce : 10 - bounce;
7
- }
8
- function bouncingArrowDecorator(component, context, delta /* 1 ~ 0 */) {
9
- let { left, top, width } = component.bounds;
10
- let decotag = component.decotag;
11
- let { x, y } = component.transcoordS2C(left + width / 2, top, component.rootModel);
12
- const BOUNCE = bounce(delta || 0) * 2;
13
- x = Math.max(x, 20);
14
- y = Math.max(y, 20);
15
- context.beginPath();
16
- context.moveTo(x - 10, y - 16 + BOUNCE);
17
- context.lineTo(x + 10, y - 16 + BOUNCE);
18
- context.lineTo(x + 10, y - 8 + BOUNCE);
19
- context.lineTo(x + 16, y - 8 + BOUNCE);
20
- context.lineTo(x, y + BOUNCE);
21
- context.lineTo(x - 16, y - 8 + BOUNCE);
22
- context.lineTo(x - 10, y - 8 + BOUNCE);
23
- context.lineTo(x - 10, y - 16 + BOUNCE);
24
- context.lineTo(x - 10, y - 16 + BOUNCE);
25
- context.fillStyle = '#FF0000';
26
- context.fill();
27
- if (decotag) {
28
- context.beginPath();
29
- context.font = '12px Arial';
30
- let metrics = context.measureText(decotag);
31
- context.fillStyle = '#FF0000';
32
- context.roundRect(x - metrics.actualBoundingBoxLeft - 3 + 20, y - metrics.actualBoundingBoxAscent - 3 - 6 + BOUNCE, metrics.actualBoundingBoxLeft + metrics.actualBoundingBoxRight + 3 * 2, metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent + 3 * 2, 3 /* round */);
33
- context.fill();
34
- context.fillStyle = 'white';
35
- context.fillText(decotag, x + 20, y - 6 + BOUNCE);
36
- }
37
- return true; /* need animation */
38
- }
39
- Component.registerDecorator('bouncing-arrow', bouncingArrowDecorator);
40
- //# sourceMappingURL=bouncing-arrow-decorator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bouncing-arrow-decorator.js","sourceRoot":"","sources":["../../../src/layers/bouncing-arrow-decorator.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '@hatiolab/things-scene'\n\nfunction bounce(delta: number): number {\n const progress = (1 - delta) * 100\n const round = progress / 10\n const bounce = progress % 10 /* 10회 바운스 */\n\n return bounce < 5 ? bounce : 10 - bounce\n}\n\nfunction bouncingArrowDecorator(component: Component, context: any, delta?: number /* 1 ~ 0 */) {\n let { left, top, width } = component.bounds\n let decotag = (component as any).decotag\n let { x, y } = (component as any).transcoordS2C(left + width / 2, top, component.rootModel)\n\n const BOUNCE = bounce(delta || 0) * 2\n\n x = Math.max(x, 20)\n y = Math.max(y, 20)\n\n context.beginPath()\n\n context.moveTo(x - 10, y - 16 + BOUNCE)\n context.lineTo(x + 10, y - 16 + BOUNCE)\n context.lineTo(x + 10, y - 8 + BOUNCE)\n context.lineTo(x + 16, y - 8 + BOUNCE)\n context.lineTo(x, y + BOUNCE)\n context.lineTo(x - 16, y - 8 + BOUNCE)\n context.lineTo(x - 10, y - 8 + BOUNCE)\n context.lineTo(x - 10, y - 16 + BOUNCE)\n context.lineTo(x - 10, y - 16 + BOUNCE)\n\n context.fillStyle = '#FF0000'\n\n context.fill()\n\n if (decotag) {\n context.beginPath()\n\n context.font = '12px Arial'\n let metrics = context.measureText(decotag)\n\n context.fillStyle = '#FF0000'\n context.roundRect(\n x - metrics.actualBoundingBoxLeft - 3 + 20,\n y - metrics.actualBoundingBoxAscent - 3 - 6 + BOUNCE,\n metrics.actualBoundingBoxLeft + metrics.actualBoundingBoxRight + 3 * 2,\n metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent + 3 * 2,\n 3 /* round */\n )\n\n context.fill()\n\n context.fillStyle = 'white'\n context.fillText(decotag, x + 20, y - 6 + BOUNCE)\n }\n\n return true /* need animation */\n}\n\nComponent.registerDecorator('bouncing-arrow', bouncingArrowDecorator)\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,70 +0,0 @@
1
- import { EventMap } from '@hatiolab/things-scene';
2
- function onmouseenter(event, hint) {
3
- var _a;
4
- const target = hint.origin;
5
- if (!((_a = target.model) === null || _a === void 0 ? void 0 : _a.id)) {
6
- return;
7
- }
8
- event.stopPropagation();
9
- window.dispatchEvent(new CustomEvent('fetchFmbModelDataByMouseEvent', {
10
- detail: {
11
- value: {
12
- type: 'hover',
13
- event,
14
- model: target.model
15
- }
16
- }
17
- }));
18
- }
19
- function onclick(event, hint) {
20
- var _a;
21
- const target = hint.origin;
22
- if (!((_a = target.model) === null || _a === void 0 ? void 0 : _a.id)) {
23
- return;
24
- }
25
- event.stopPropagation();
26
- setTimeout(() => {
27
- if (target.currentEvent !== 'dblclick') {
28
- window.dispatchEvent(new CustomEvent('fetchFmbModelDataByMouseEvent', {
29
- detail: {
30
- value: {
31
- type: 'click',
32
- event,
33
- model: target.model
34
- }
35
- }
36
- }));
37
- }
38
- }, 300);
39
- }
40
- function ondblclick(event, hint) {
41
- var _a;
42
- const target = hint.origin;
43
- if (!((_a = target.model) === null || _a === void 0 ? void 0 : _a.id)) {
44
- return;
45
- }
46
- event.stopPropagation();
47
- target.currentEvent = 'dblclick';
48
- window.dispatchEvent(new CustomEvent('fetchFmbModelDataByMouseEvent', {
49
- detail: {
50
- value: {
51
- type: 'dblclick',
52
- event,
53
- model: target.model
54
- }
55
- }
56
- }));
57
- setTimeout(() => {
58
- target.currentEvent = '';
59
- }, 500);
60
- }
61
- EventMap.register('event-handler', {
62
- 'model-layer': {
63
- '(all)': {
64
- mouseenter: onmouseenter,
65
- click: onclick,
66
- dblclick: ondblclick
67
- }
68
- }
69
- });
70
- //# sourceMappingURL=event-handlers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-handlers.js","sourceRoot":"","sources":["../../../src/layers/event-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjD,SAAS,YAAY,CAAC,KAAiB,EAAE,IAAS;;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAE1B,IAAI,CAAC,CAAA,MAAA,MAAM,CAAC,KAAK,0CAAE,EAAE,CAAA,EAAE;QACrB,OAAM;KACP;IAED,KAAK,CAAC,eAAe,EAAE,CAAA;IAEvB,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CAAC,+BAA+B,EAAE;QAC/C,MAAM,EAAE;YACN,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,KAAK;gBACL,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB;SACF;KACF,CAAC,CACH,CAAA;AACH,CAAC;AAED,SAAS,OAAO,CAAC,KAAiB,EAAE,IAAS;;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAE1B,IAAI,CAAC,CAAA,MAAA,MAAM,CAAC,KAAK,0CAAE,EAAE,CAAA,EAAE;QACrB,OAAM;KACP;IAED,KAAK,CAAC,eAAe,EAAE,CAAA;IAEvB,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,MAAM,CAAC,YAAY,KAAK,UAAU,EAAE;YACtC,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CAAC,+BAA+B,EAAE;gBAC/C,MAAM,EAAE;oBACN,KAAK,EAAE;wBACL,IAAI,EAAE,OAAO;wBACb,KAAK;wBACL,KAAK,EAAE,MAAM,CAAC,KAAK;qBACpB;iBACF;aACF,CAAC,CACH,CAAA;SACF;IACH,CAAC,EAAE,GAAG,CAAC,CAAA;AACT,CAAC;AAED,SAAS,UAAU,CAAC,KAAiB,EAAE,IAAS;;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAE1B,IAAI,CAAC,CAAA,MAAA,MAAM,CAAC,KAAK,0CAAE,EAAE,CAAA,EAAE;QACrB,OAAM;KACP;IAED,KAAK,CAAC,eAAe,EAAE,CAAA;IAEvB,MAAM,CAAC,YAAY,GAAG,UAAU,CAAA;IAChC,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CAAC,+BAA+B,EAAE;QAC/C,MAAM,EAAE;YACN,KAAK,EAAE;gBACL,IAAI,EAAE,UAAU;gBAChB,KAAK;gBACL,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB;SACF;KACF,CAAC,CACH,CAAA;IAED,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,CAAC,YAAY,GAAG,EAAE,CAAA;IAC1B,CAAC,EAAE,GAAG,CAAC,CAAA;AACT,CAAC;AAED,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE;IACjC,aAAa,EAAE;QACb,OAAO,EAAE;YACP,UAAU,EAAE,YAAY;YACxB,KAAK,EAAE,OAAO;YACd,QAAQ,EAAE,UAAU;SACrB;KACF;CACF,CAAC,CAAA","sourcesContent":["import { EventMap } from '@hatiolab/things-scene'\n\nfunction onmouseenter(event: MouseEvent, hint: any) {\n const target = hint.origin\n\n if (!target.model?.id) {\n return\n }\n\n event.stopPropagation()\n\n window.dispatchEvent(\n new CustomEvent('fetchFmbModelDataByMouseEvent', {\n detail: {\n value: {\n type: 'hover',\n event,\n model: target.model\n }\n }\n })\n )\n}\n\nfunction onclick(event: MouseEvent, hint: any) {\n const target = hint.origin\n\n if (!target.model?.id) {\n return\n }\n\n event.stopPropagation()\n\n setTimeout(() => {\n if (target.currentEvent !== 'dblclick') {\n window.dispatchEvent(\n new CustomEvent('fetchFmbModelDataByMouseEvent', {\n detail: {\n value: {\n type: 'click',\n event,\n model: target.model\n }\n }\n })\n )\n }\n }, 300)\n}\n\nfunction ondblclick(event: MouseEvent, hint: any) {\n const target = hint.origin\n\n if (!target.model?.id) {\n return\n }\n\n event.stopPropagation()\n\n target.currentEvent = 'dblclick'\n window.dispatchEvent(\n new CustomEvent('fetchFmbModelDataByMouseEvent', {\n detail: {\n value: {\n type: 'dblclick',\n event,\n model: target.model\n }\n }\n })\n )\n\n setTimeout(() => {\n target.currentEvent = ''\n }, 500)\n}\n\nEventMap.register('event-handler', {\n 'model-layer': {\n '(all)': {\n mouseenter: onmouseenter,\n click: onclick,\n dblclick: ondblclick\n }\n }\n})\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,73 +0,0 @@
1
- import { EventMap } from '@hatiolab/things-scene';
2
- function onmouseenter(event, hint) {
3
- var _a;
4
- const target = hint.origin;
5
- if (!((_a = target.model) === null || _a === void 0 ? void 0 : _a.id)) {
6
- return;
7
- }
8
- event.stopPropagation();
9
- window.dispatchEvent(new CustomEvent('fetchFmbModelDataByMouseEvent', {
10
- detail: {
11
- value: {
12
- type: 'hover',
13
- event,
14
- model: target.state,
15
- data: target.data
16
- }
17
- }
18
- }));
19
- }
20
- function onclick(event, hint) {
21
- var _a;
22
- const target = hint.origin;
23
- if (!((_a = target.model) === null || _a === void 0 ? void 0 : _a.id)) {
24
- return;
25
- }
26
- event.stopPropagation();
27
- setTimeout(() => {
28
- if (target.currentEvent !== 'dblclick') {
29
- window.dispatchEvent(new CustomEvent('fetchFmbModelDataByMouseEvent', {
30
- detail: {
31
- value: {
32
- type: 'click',
33
- event,
34
- model: target.state,
35
- data: target.data
36
- }
37
- }
38
- }));
39
- }
40
- }, 300);
41
- }
42
- function ondblclick(event, hint) {
43
- var _a;
44
- const target = hint.origin;
45
- setTimeout(() => {
46
- target.currentEvent = '';
47
- }, 500);
48
- if (!((_a = target.model) === null || _a === void 0 ? void 0 : _a.id)) {
49
- return;
50
- }
51
- event.stopPropagation();
52
- target.currentEvent = 'dblclick';
53
- window.dispatchEvent(new CustomEvent('fetchFmbModelDataByMouseEvent', {
54
- detail: {
55
- value: {
56
- type: 'dblclick',
57
- event,
58
- model: target.state,
59
- data: target.data
60
- }
61
- }
62
- }));
63
- }
64
- EventMap.register('mcs-event-handler', {
65
- 'model-layer': {
66
- '(all)': {
67
- mouseenter: onmouseenter,
68
- click: onclick,
69
- dblclick: ondblclick
70
- }
71
- }
72
- });
73
- //# sourceMappingURL=mcs-event-handlers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcs-event-handlers.js","sourceRoot":"","sources":["../../../src/layers/mcs-event-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjD,SAAS,YAAY,CAAC,KAAiB,EAAE,IAAS;;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAE1B,IAAI,CAAC,CAAA,MAAA,MAAM,CAAC,KAAK,0CAAE,EAAE,CAAA,EAAE;QACrB,OAAM;KACP;IAED,KAAK,CAAC,eAAe,EAAE,CAAA;IAEvB,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CAAC,+BAA+B,EAAE;QAC/C,MAAM,EAAE;YACN,KAAK,EAAE;gBACL,IAAI,EAAE,OAAO;gBACb,KAAK;gBACL,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB;SACF;KACF,CAAC,CACH,CAAA;AACH,CAAC;AAED,SAAS,OAAO,CAAC,KAAiB,EAAE,IAAS;;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAE1B,IAAI,CAAC,CAAA,MAAA,MAAM,CAAC,KAAK,0CAAE,EAAE,CAAA,EAAE;QACrB,OAAM;KACP;IAED,KAAK,CAAC,eAAe,EAAE,CAAA;IAEvB,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,MAAM,CAAC,YAAY,KAAK,UAAU,EAAE;YACtC,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CAAC,+BAA+B,EAAE;gBAC/C,MAAM,EAAE;oBACN,KAAK,EAAE;wBACL,IAAI,EAAE,OAAO;wBACb,KAAK;wBACL,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;qBAClB;iBACF;aACF,CAAC,CACH,CAAA;SACF;IACH,CAAC,EAAE,GAAG,CAAC,CAAA;AACT,CAAC;AAED,SAAS,UAAU,CAAC,KAAiB,EAAE,IAAS;;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAE1B,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,CAAC,YAAY,GAAG,EAAE,CAAA;IAC1B,CAAC,EAAE,GAAG,CAAC,CAAA;IAEP,IAAI,CAAC,CAAA,MAAA,MAAM,CAAC,KAAK,0CAAE,EAAE,CAAA,EAAE;QACrB,OAAM;KACP;IAED,KAAK,CAAC,eAAe,EAAE,CAAA;IAEvB,MAAM,CAAC,YAAY,GAAG,UAAU,CAAA;IAChC,MAAM,CAAC,aAAa,CAClB,IAAI,WAAW,CAAC,+BAA+B,EAAE;QAC/C,MAAM,EAAE;YACN,KAAK,EAAE;gBACL,IAAI,EAAE,UAAU;gBAChB,KAAK;gBACL,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB;SACF;KACF,CAAC,CACH,CAAA;AACH,CAAC;AAED,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,EAAE;IACrC,aAAa,EAAE;QACb,OAAO,EAAE;YACP,UAAU,EAAE,YAAY;YACxB,KAAK,EAAE,OAAO;YACd,QAAQ,EAAE,UAAU;SACrB;KACF;CACF,CAAC,CAAA","sourcesContent":["import { EventMap } from '@hatiolab/things-scene'\n\nfunction onmouseenter(event: MouseEvent, hint: any) {\n const target = hint.origin\n\n if (!target.model?.id) {\n return\n }\n\n event.stopPropagation()\n\n window.dispatchEvent(\n new CustomEvent('fetchFmbModelDataByMouseEvent', {\n detail: {\n value: {\n type: 'hover',\n event,\n model: target.state,\n data: target.data\n }\n }\n })\n )\n}\n\nfunction onclick(event: MouseEvent, hint: any) {\n const target = hint.origin\n\n if (!target.model?.id) {\n return\n }\n\n event.stopPropagation()\n\n setTimeout(() => {\n if (target.currentEvent !== 'dblclick') {\n window.dispatchEvent(\n new CustomEvent('fetchFmbModelDataByMouseEvent', {\n detail: {\n value: {\n type: 'click',\n event,\n model: target.state,\n data: target.data\n }\n }\n })\n )\n }\n }, 300)\n}\n\nfunction ondblclick(event: MouseEvent, hint: any) {\n const target = hint.origin\n\n setTimeout(() => {\n target.currentEvent = ''\n }, 500)\n\n if (!target.model?.id) {\n return\n }\n\n event.stopPropagation()\n\n target.currentEvent = 'dblclick'\n window.dispatchEvent(\n new CustomEvent('fetchFmbModelDataByMouseEvent', {\n detail: {\n value: {\n type: 'dblclick',\n event,\n model: target.state,\n data: target.data\n }\n }\n })\n )\n}\n\nEventMap.register('mcs-event-handler', {\n 'model-layer': {\n '(all)': {\n mouseenter: onmouseenter,\n click: onclick,\n dblclick: ondblclick\n }\n }\n})\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,189 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { html, css, LitElement } from 'lit';
3
- import { customElement, property } from 'lit/decorators.js';
4
- let OxminimapComponent = class OxminimapComponent extends LitElement {
5
- constructor() {
6
- super(...arguments);
7
- this.target = null;
8
- this.scene = null;
9
- this.isDragging = false;
10
- this.startX = 0;
11
- this.startY = 0;
12
- this.initialScrollLeft = 0;
13
- this.initialScrollTop = 0;
14
- }
15
- connectedCallback() {
16
- super.connectedCallback();
17
- window.addEventListener('resize', this.handleResize.bind(this));
18
- }
19
- disconnectedCallback() {
20
- super.disconnectedCallback();
21
- window.removeEventListener('resize', this.handleResize.bind(this));
22
- }
23
- firstUpdated(changes) {
24
- super.firstUpdated(changes);
25
- this.updateTarget();
26
- this.checkVisibilityX();
27
- }
28
- updated(changedProperties) {
29
- if (changedProperties.has('target')) {
30
- this.updateTarget();
31
- }
32
- }
33
- handleResize() {
34
- this.updateTarget();
35
- this.checkVisibilityX();
36
- }
37
- updateTarget() {
38
- var _a, _b;
39
- const target = this.target || this.parentElement;
40
- if (!target || !this.scene) {
41
- return;
42
- }
43
- const { width, height } = this.scene.model;
44
- const { x: scaleX, y: scaleY } = this.scene.scale;
45
- const targetRatio = (width * scaleX) / (height * scaleY);
46
- const thisRatio = this.offsetHeight / this.offsetWidth;
47
- const scale = targetRatio > thisRatio ? this.offsetHeight / target.scrollHeight : this.offsetWidth / target.scrollWidth;
48
- const minimapHeight = width * scaleX * scale;
49
- const minimapWidth = height * scaleY * scale;
50
- const viewportHeight = target.offsetHeight * scale;
51
- const viewportWidth = target.offsetWidth * scale;
52
- const minimap = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('minimap');
53
- const viewport = (_b = this.shadowRoot) === null || _b === void 0 ? void 0 : _b.getElementById('viewport');
54
- minimap.style.width = `${minimapWidth}px`;
55
- minimap.style.height = `${minimapHeight}px`;
56
- viewport.style.width = `${viewportWidth}px`;
57
- viewport.style.height = `${viewportHeight}px`;
58
- const viewportLeft = target.scrollLeft * scale;
59
- const viewportTop = target.scrollTop * scale;
60
- viewport.style.width = `${viewportWidth}px`;
61
- viewport.style.height = `${viewportHeight}px`;
62
- viewport.style.left = `${viewportLeft}px`;
63
- viewport.style.top = `${viewportTop}px`;
64
- }
65
- checkVisibilityX() {
66
- var _a;
67
- const parentElement = this.target || this.parentElement;
68
- if (!parentElement)
69
- return;
70
- const parentRect = parentElement.getBoundingClientRect();
71
- const minimap = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('minimap');
72
- if (parentRect.width >= minimap.offsetWidth && parentRect.height >= minimap.offsetHeight) {
73
- this.style.display = 'block';
74
- }
75
- else {
76
- this.style.display = 'none';
77
- }
78
- }
79
- handleMouseDown(event) {
80
- var _a;
81
- const target = this.target || this.parentElement;
82
- if (!target) {
83
- return;
84
- }
85
- const minimapViewport = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('viewport');
86
- this.startX = event.clientX;
87
- this.startY = event.clientY;
88
- this.initialScrollLeft = target.scrollLeft || 0;
89
- this.initialScrollTop = target.scrollTop || 0;
90
- this.isDragging = true;
91
- minimapViewport.classList.add('dragging');
92
- event.preventDefault();
93
- event.stopPropagation();
94
- }
95
- handleMouseMove(event) {
96
- var _a;
97
- if (!this.isDragging)
98
- return;
99
- const deltaX = event.clientX - this.startX;
100
- const deltaY = event.clientY - this.startY;
101
- const target = this.target || this.parentElement;
102
- if (!target || !this.scene) {
103
- return;
104
- }
105
- const { width, height } = this.scene.model;
106
- var { x: scale, y } = this.scene.scale;
107
- const targetRatio = height / width;
108
- const thisRatio = this.offsetHeight / this.offsetWidth;
109
- // const scale = targetRatio > thisRatio ? this.offsetHeight / height : this.offsetWidth / width
110
- const targetRect = target.getBoundingClientRect();
111
- const viewportWidth = (targetRect.width * target.clientWidth) / width;
112
- const viewportHeight = (targetRect.height * target.clientHeight) / height;
113
- const scrollX = deltaX / scale;
114
- const scrollY = deltaY / scale;
115
- target.scrollTo(this.initialScrollLeft + scrollX, this.initialScrollTop + scrollY);
116
- const minimapViewport = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('viewport');
117
- minimapViewport.style.left = `${Math.max(0, Math.min(event.clientX - viewportWidth / 2, target.clientWidth - viewportWidth))}px`;
118
- minimapViewport.style.top = `${Math.max(0, Math.min(event.clientY - viewportHeight / 2, target.clientHeight - viewportHeight))}px`;
119
- this.updateTarget();
120
- event.preventDefault();
121
- event.stopPropagation();
122
- }
123
- handleMouseUp(event) {
124
- var _a;
125
- const minimapViewport = (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.getElementById('minimap');
126
- this.isDragging = false;
127
- minimapViewport.classList.remove('dragging');
128
- event.preventDefault();
129
- event.stopPropagation();
130
- }
131
- render() {
132
- return html `
133
- <div
134
- id="minimap"
135
- @dragstart=${(e) => e.stopPropagation()}
136
- @drag=${(e) => e.stopPropagation()}
137
- @dragend=${(e) => e.stopPropagation()}
138
- @mousedown=${(e) => e.stopPropagation()}
139
- @mousemove=${(e) => e.stopPropagation()}
140
- @mouseup=${(e) => e.stopPropagation()}
141
- >
142
- <div
143
- id="viewport"
144
- @mousedown=${this.handleMouseDown}
145
- @mousemove=${this.handleMouseMove}
146
- @mouseup=${this.handleMouseUp}
147
- ></div>
148
- </div>
149
- `;
150
- }
151
- };
152
- OxminimapComponent.styles = css `
153
- :host {
154
- display: flex;
155
- position: relative;
156
- background-color: gray;
157
- }
158
-
159
- #minimap {
160
- position: absolute;
161
- top: 50%;
162
- left: 50%;
163
- transform: translate(-50%, -50%);
164
- box-sizing: border-box;
165
-
166
- background-color: white;
167
- overflow: hidden;
168
- }
169
-
170
- #viewport {
171
- position: absolute;
172
- border: 1px dashed blue;
173
- box-sizing: border-box;
174
- pointer-events: none;
175
- background-color: white;
176
- pointer-events: auto;
177
- cursor: move;
178
- }
179
- `;
180
- __decorate([
181
- property({ type: Object })
182
- ], OxminimapComponent.prototype, "target", void 0);
183
- __decorate([
184
- property({ type: Object })
185
- ], OxminimapComponent.prototype, "scene", void 0);
186
- OxminimapComponent = __decorate([
187
- customElement('ox-mini-map')
188
- ], OxminimapComponent);
189
- //# sourceMappingURL=ox-mini-map.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ox-mini-map.js","sourceRoot":"","sources":["../../../src/layers/ox-mini-map.ts"],"names":[],"mappings":"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","sourcesContent":["import { Scene } from '@hatiolab/things-scene'\nimport { html, css, LitElement, PropertyValueMap } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n@customElement('ox-mini-map')\nclass OxminimapComponent extends LitElement {\n static styles = css`\n :host {\n display: flex;\n position: relative;\n background-color: gray;\n }\n\n #minimap {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n box-sizing: border-box;\n\n background-color: white;\n overflow: hidden;\n }\n\n #viewport {\n position: absolute;\n border: 1px dashed blue;\n box-sizing: border-box;\n pointer-events: none;\n background-color: white;\n pointer-events: auto;\n cursor: move;\n }\n `\n\n @property({ type: Object }) target: HTMLElement | null = null\n @property({ type: Object }) scene: Scene | null = null\n\n private isDragging = false\n private startX = 0\n private startY = 0\n private initialScrollLeft = 0\n private initialScrollTop = 0\n\n connectedCallback() {\n super.connectedCallback()\n window.addEventListener('resize', this.handleResize.bind(this))\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n window.removeEventListener('resize', this.handleResize.bind(this))\n }\n\n firstUpdated(changes: PropertyValueMap<any> | Map<PropertyKey, unknown>) {\n super.firstUpdated(changes)\n\n this.updateTarget()\n this.checkVisibilityX()\n }\n\n updated(changedProperties: Map<string, any>) {\n if (changedProperties.has('target')) {\n this.updateTarget()\n }\n }\n\n handleResize() {\n this.updateTarget()\n this.checkVisibilityX()\n }\n\n updateTarget() {\n const target = this.target || this.parentElement\n if (!target || !this.scene) {\n return\n }\n\n const { width, height } = this.scene.model\n const { x: scaleX, y: scaleY } = this.scene.scale\n\n const targetRatio = (width * scaleX) / (height * scaleY)\n const thisRatio = this.offsetHeight / this.offsetWidth\n\n const scale =\n targetRatio > thisRatio ? this.offsetHeight / target.scrollHeight : this.offsetWidth / target.scrollWidth\n\n const minimapHeight = width * scaleX * scale\n const minimapWidth = height * scaleY * scale\n\n const viewportHeight = target.offsetHeight * scale\n const viewportWidth = target.offsetWidth * scale\n\n const minimap = this.shadowRoot?.getElementById('minimap') as HTMLElement\n const viewport = this.shadowRoot?.getElementById('viewport') as HTMLElement\n\n minimap.style.width = `${minimapWidth}px`\n minimap.style.height = `${minimapHeight}px`\n\n viewport.style.width = `${viewportWidth}px`\n viewport.style.height = `${viewportHeight}px`\n\n const viewportLeft = target.scrollLeft * scale\n const viewportTop = target.scrollTop * scale\n\n viewport.style.width = `${viewportWidth}px`\n viewport.style.height = `${viewportHeight}px`\n viewport.style.left = `${viewportLeft}px`\n viewport.style.top = `${viewportTop}px`\n }\n\n checkVisibilityX() {\n const parentElement = this.target || this.parentElement\n if (!parentElement) return\n\n const parentRect = parentElement.getBoundingClientRect()\n const minimap = this.shadowRoot?.getElementById('minimap') as HTMLElement\n if (parentRect.width >= minimap.offsetWidth && parentRect.height >= minimap.offsetHeight) {\n this.style.display = 'block'\n } else {\n this.style.display = 'none'\n }\n }\n\n handleMouseDown(event: MouseEvent) {\n const target = this.target || this.parentElement\n\n if (!target) {\n return\n }\n\n const minimapViewport = this.shadowRoot?.getElementById('viewport') as HTMLElement\n this.startX = event.clientX\n this.startY = event.clientY\n this.initialScrollLeft = target.scrollLeft || 0\n this.initialScrollTop = target.scrollTop || 0\n this.isDragging = true\n minimapViewport.classList.add('dragging')\n event.preventDefault()\n event.stopPropagation()\n }\n\n handleMouseMove(event: MouseEvent) {\n if (!this.isDragging) return\n const deltaX = event.clientX - this.startX\n const deltaY = event.clientY - this.startY\n\n const target = this.target || this.parentElement\n\n if (!target || !this.scene) {\n return\n }\n\n const { width, height } = this.scene.model\n var { x: scale, y } = this.scene.scale\n\n const targetRatio = height / width\n const thisRatio = this.offsetHeight / this.offsetWidth\n\n // const scale = targetRatio > thisRatio ? this.offsetHeight / height : this.offsetWidth / width\n\n const targetRect = target.getBoundingClientRect()\n const viewportWidth = (targetRect.width * target.clientWidth) / width\n const viewportHeight = (targetRect.height * target.clientHeight) / height\n const scrollX = deltaX / scale\n const scrollY = deltaY / scale\n target.scrollTo(this.initialScrollLeft + scrollX, this.initialScrollTop + scrollY)\n const minimapViewport = this.shadowRoot?.getElementById('viewport') as HTMLElement\n minimapViewport.style.left = `${Math.max(\n 0,\n Math.min(event.clientX - viewportWidth / 2, target.clientWidth - viewportWidth)\n )}px`\n minimapViewport.style.top = `${Math.max(\n 0,\n Math.min(event.clientY - viewportHeight / 2, target.clientHeight - viewportHeight)\n )}px`\n\n this.updateTarget()\n event.preventDefault()\n event.stopPropagation()\n }\n\n handleMouseUp(event: MouseEvent) {\n const minimapViewport = this.shadowRoot?.getElementById('minimap') as HTMLElement\n this.isDragging = false\n minimapViewport.classList.remove('dragging')\n event.preventDefault()\n event.stopPropagation()\n }\n\n render() {\n return html`\n <div\n id=\"minimap\"\n @dragstart=${(e: Event) => e.stopPropagation()}\n @drag=${(e: Event) => e.stopPropagation()}\n @dragend=${(e: Event) => e.stopPropagation()}\n @mousedown=${(e: Event) => e.stopPropagation()}\n @mousemove=${(e: Event) => e.stopPropagation()}\n @mouseup=${(e: Event) => e.stopPropagation()}\n >\n <div\n id=\"viewport\"\n @mousedown=${this.handleMouseDown}\n @mousemove=${this.handleMouseMove}\n @mouseup=${this.handleMouseUp}\n ></div>\n </div>\n `\n }\n}\n"]}
@@ -1,24 +0,0 @@
1
- import { Layer, Properties } from '@hatiolab/things-scene';
2
- export default class ScrollLayer extends Layer {
3
- get capturable(): boolean;
4
- private _scale?;
5
- private _translate?;
6
- private lastPosition?;
7
- private vscroller;
8
- private hscroller;
9
- render(ctx: CanvasRenderingContext2D): void;
10
- contains(x: number, y: number): boolean;
11
- get eventMap(): {
12
- '(root)': {
13
- 'model-layer': {
14
- change: (after: any, before: any, hint: any) => void;
15
- };
16
- };
17
- };
18
- onchange(after: Properties): void;
19
- ondragstart(e: DragEvent, hint: any): void;
20
- ondragmove(e: DragEvent, hint: any): void;
21
- ondragend(): void;
22
- calcScrollerBounds(): void;
23
- onchangeModelLayer(after: any, before: any, hint: any): void;
24
- }