@arbetsformedlingen/yrkesvaljaren 2.0.5
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/LICENSE +190 -0
- package/README.md +369 -0
- package/dist/cjs/af-validation-message-BzY5H0xU.js +16 -0
- package/dist/cjs/core-selector.cjs.entry.js +476 -0
- package/dist/cjs/digi-service-job-selector.cjs.entry.js +1619 -0
- package/dist/cjs/fuse-BTLNKxuL.js +1631 -0
- package/dist/cjs/geo-valjaren.cjs.entry.js +14910 -0
- package/dist/cjs/index-BOuTGlEp.js +1817 -0
- package/dist/cjs/index.cjs.js +14 -0
- package/dist/cjs/job-selector-demo.cjs.entry.js +692 -0
- package/dist/cjs/loader.cjs.js +12 -0
- package/dist/cjs/neobrutal-search.cjs.entry.js +171 -0
- package/dist/cjs/search.engine-D0cMelRi.js +489 -0
- package/dist/cjs/taxonomy-registry-DVmuDUpM.js +435 -0
- package/dist/cjs/types-CtHBl6Ra.js +14 -0
- package/dist/cjs/yrkesvaljaren.cjs.js +24 -0
- package/dist/collection/collection-manifest.json +15 -0
- package/dist/collection/components/core-selector/core-selector.css +803 -0
- package/dist/collection/components/core-selector/core-selector.js +761 -0
- package/dist/collection/components/core-selector/types.js +1 -0
- package/dist/collection/components/design-compat/af-icon.js +13 -0
- package/dist/collection/components/design-compat/af-label.js +2 -0
- package/dist/collection/components/design-compat/af-tag.js +6 -0
- package/dist/collection/components/design-compat/af-validation-message.js +11 -0
- package/dist/collection/components/design-compat/index.js +4 -0
- package/dist/collection/components/geovaljaren/geovaljaren.css +21 -0
- package/dist/collection/components/geovaljaren/geovaljaren.js +304 -0
- package/dist/collection/components/geovaljaren/logic/adapter.utils.js +20 -0
- package/dist/collection/components/geovaljaren/logic/data.utils.js +12 -0
- package/dist/collection/components/geovaljaren/logic/history-service.js +25 -0
- package/dist/collection/components/geovaljaren/logic/search.engine.js +28 -0
- package/dist/collection/components/job-selector/constants.js +26 -0
- package/dist/collection/components/job-selector/history-service.js +41 -0
- package/dist/collection/components/job-selector/job-selector-controller.js +835 -0
- package/dist/collection/components/job-selector/job-selector.css +318 -0
- package/dist/collection/components/job-selector/job-selector.js +1378 -0
- package/dist/collection/components/job-selector/keyboard-handlers.js +84 -0
- package/dist/collection/components/job-selector/logic/adapter.utils.js +75 -0
- package/dist/collection/components/job-selector/logic/label-formatter.js +118 -0
- package/dist/collection/components/job-selector/logic/search.engine.js +50 -0
- package/dist/collection/components/job-selector/search-logic.js +35 -0
- package/dist/collection/components/job-selector/search.utils.js +224 -0
- package/dist/collection/components/job-selector/suggestions-list.js +31 -0
- package/dist/collection/components/job-selector/taxonomy-registry.js +60 -0
- package/dist/collection/components/job-selector/test-data.mock.js +33 -0
- package/dist/collection/components/job-selector/types.js +10 -0
- package/dist/collection/components/job-selector/validation-message.js +24 -0
- package/dist/collection/demo-data.js +20 -0
- package/dist/collection/index.js +7 -0
- package/dist/collection/verkstad/verkstad.js +407 -0
- package/dist/components/core-selector.d.ts +11 -0
- package/dist/components/core-selector.js +1 -0
- package/dist/components/core-selector2.js +1 -0
- package/dist/components/digi-service-job-selector.d.ts +11 -0
- package/dist/components/digi-service-job-selector.js +1 -0
- package/dist/components/fuse.js +1 -0
- package/dist/components/geo-valjaren.d.ts +11 -0
- package/dist/components/geo-valjaren.js +1 -0
- package/dist/components/index.d.ts +35 -0
- package/dist/components/index.js +1 -0
- package/dist/components/job-selector-demo.d.ts +11 -0
- package/dist/components/job-selector-demo.js +1 -0
- package/dist/components/job-selector.js +1 -0
- package/dist/components/neobrutal-search.d.ts +11 -0
- package/dist/components/neobrutal-search.js +1 -0
- package/dist/components/search.engine.js +1 -0
- package/dist/components/types.js +1 -0
- package/dist/esm/af-validation-message-F8NIH2rC.js +14 -0
- package/dist/esm/core-selector.entry.js +474 -0
- package/dist/esm/digi-service-job-selector.entry.js +1617 -0
- package/dist/esm/fuse-BPnhMTul.js +1629 -0
- package/dist/esm/geo-valjaren.entry.js +14908 -0
- package/dist/esm/index-CGXZllj2.js +1806 -0
- package/dist/esm/index.js +10 -0
- package/dist/esm/job-selector-demo.entry.js +690 -0
- package/dist/esm/loader.js +10 -0
- package/dist/esm/neobrutal-search.entry.js +169 -0
- package/dist/esm/search.engine-nZ7AcXba.js +479 -0
- package/dist/esm/taxonomy-registry-Dw0VR9Aw.js +430 -0
- package/dist/esm/types-DHUftoZJ.js +12 -0
- package/dist/esm/yrkesvaljaren.js +20 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.js +1 -0
- package/dist/types/components/core-selector/core-selector.d.ts +46 -0
- package/dist/types/components/core-selector/types.d.ts +1 -0
- package/dist/types/components/design-compat/af-icon.d.ts +7 -0
- package/dist/types/components/design-compat/af-label.d.ts +8 -0
- package/dist/types/components/design-compat/af-tag.d.ts +8 -0
- package/dist/types/components/design-compat/af-validation-message.d.ts +9 -0
- package/dist/types/components/design-compat/index.d.ts +5 -0
- package/dist/types/components/geovaljaren/geovaljaren.d.ts +24 -0
- package/dist/types/components/geovaljaren/logic/adapter.utils.d.ts +7 -0
- package/dist/types/components/geovaljaren/logic/data.utils.d.ts +7 -0
- package/dist/types/components/geovaljaren/logic/history-service.d.ts +6 -0
- package/dist/types/components/geovaljaren/logic/search.engine.d.ts +7 -0
- package/dist/types/components/job-selector/ambient.d.ts +4 -0
- package/dist/types/components/job-selector/constants.d.ts +13 -0
- package/dist/types/components/job-selector/history-service.d.ts +6 -0
- package/dist/types/components/job-selector/job-selector-controller.d.ts +82 -0
- package/dist/types/components/job-selector/job-selector.d.ts +140 -0
- package/dist/types/components/job-selector/keyboard-handlers.d.ts +13 -0
- package/dist/types/components/job-selector/logic/adapter.utils.d.ts +12 -0
- package/dist/types/components/job-selector/logic/label-formatter.d.ts +4 -0
- package/dist/types/components/job-selector/logic/search.engine.d.ts +21 -0
- package/dist/types/components/job-selector/search-logic.d.ts +17 -0
- package/dist/types/components/job-selector/search.utils.d.ts +10 -0
- package/dist/types/components/job-selector/suggestions-list.d.ts +13 -0
- package/dist/types/components/job-selector/taxonomy-registry.d.ts +20 -0
- package/dist/types/components/job-selector/test-data.mock.d.ts +7 -0
- package/dist/types/components/job-selector/types.d.ts +107 -0
- package/dist/types/components/job-selector/validation-message.d.ts +8 -0
- package/dist/types/components/job-selector-demo/job-selector-demo.d.ts +55 -0
- package/dist/types/components/neobrutal-search/neobrutal-search.d.ts +18 -0
- package/dist/types/components.d.ts +425 -0
- package/dist/types/demo-data.d.ts +16 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/stencil-public-runtime.d.ts +1873 -0
- package/dist/types/verkstad/verkstad.d.ts +1 -0
- package/dist/yrkesvaljaren/fuse-B0eHOxow.js.map +1 -0
- package/dist/yrkesvaljaren/index-Cy4BCo5s.js.map +1 -0
- package/dist/yrkesvaljaren/index-DfJXTQqL.js.map +1 -0
- package/dist/yrkesvaljaren/index.esm.js +1 -0
- package/dist/yrkesvaljaren/index.esm.js.map +1 -0
- package/dist/yrkesvaljaren/p-16636162.entry.js +1 -0
- package/dist/yrkesvaljaren/p-273cf6df.entry.js +1 -0
- package/dist/yrkesvaljaren/p-9e48afa4.entry.js +1 -0
- package/dist/yrkesvaljaren/p-BPnhMTul.js +1 -0
- package/dist/yrkesvaljaren/p-CGXZllj2.js +3 -0
- package/dist/yrkesvaljaren/p-DHUftoZJ.js +1 -0
- package/dist/yrkesvaljaren/p-DYFAzvqX.js +1 -0
- package/dist/yrkesvaljaren/p-Dw0VR9Aw.js +1 -0
- package/dist/yrkesvaljaren/p-aef7b5ae.entry.js +1 -0
- package/dist/yrkesvaljaren/p-b0f16abd.entry.js +1 -0
- package/dist/yrkesvaljaren/p-uBrs3sSs.js +1 -0
- package/dist/yrkesvaljaren/search.engine-DPT6roRm.js.map +1 -0
- package/dist/yrkesvaljaren/taxonomy-registry-s5khf6s4.js.map +1 -0
- package/dist/yrkesvaljaren/types-DHUftoZJ.js.map +1 -0
- package/dist/yrkesvaljaren/yrkesvaljaren.css +1 -0
- package/dist/yrkesvaljaren/yrkesvaljaren.esm.js +1 -0
- package/dist/yrkesvaljaren/yrkesvaljaren.esm.js.map +1 -0
- package/loader/cdn.js +1 -0
- package/loader/index.cjs.js +1 -0
- package/loader/index.d.ts +24 -0
- package/loader/index.es2017.js +1 -0
- package/loader/index.js +2 -0
- package/package.json +126 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var index = require('./index-BOuTGlEp.js');
|
|
4
|
+
|
|
5
|
+
const defineCustomElements = async (win, options) => {
|
|
6
|
+
if (typeof window === 'undefined') return undefined;
|
|
7
|
+
await index.globalScripts();
|
|
8
|
+
return index.bootstrapLazy([["job-selector-demo.cjs",[[512,"job-selector-demo",{"afHideHeader":[4,"af-hide-header"],"afHidePreamble":[4,"af-hide-preamble"],"variant":[32],"version":[32],"required":[32],"allowFreeText":[32],"history":[32],"size":[32],"framework":[32],"codeInstallationMode":[32],"lastSingleSelection":[32],"lastMultiSelection":[32],"implementationCode":[32],"readmeMainContent":[32],"readmeCodeContent":[32],"availableYvVersions":[32],"latestYvDataVersion":[32],"latestVersion":[32],"latestDate":[32],"latestType":[32],"latestChanges":[32],"isTaxonomyLoading":[32]},[[0,"afJobSelected","handleSelection"]]]]],["geo-valjaren.cjs",[[513,"geo-valjaren",{"label":[513,"af-label"],"placeholder":[513,"af-placeholder"],"selectorState":[32]},[[0,"csInput","handleInput"],[0,"csFocus","handleFocus"],[0,"csRequestHistory","handleRequestHistory"],[0,"csSelect","handleSelect"],[0,"csBlur","handleBlur"],[0,"csClear","handleClear"],[0,"csClearHistory","handleCsClearHistory"],[0,"csEditSelection","handleEdit"]]]]],["neobrutal-search.cjs",[[513,"neobrutal-search",{"engine":[32],"results":[32],"inputValue":[32],"isLoading":[32],"error":[32],"selectedItem":[32],"isFlipped":[32]}]]],["core-selector.cjs",[[785,"core-selector",{"state":[16],"config":[16],"label":[1],"labelDescription":[1,"label-description"],"componentId":[1,"component-id"],"size":[513,"cs-size"],"afFocused":[4,"af-focused"],"activeIndex":[32],"isFocusedInternal":[32],"isNavigatingWithKeyboard":[32],"setFocus":[64]},null,{"afFocused":[{"handleAfFocusedChange":0}],"config":[{"handleConfigChange":0}],"state":[{"handleStateChange":0}]}]]],["digi-service-job-selector.cjs",[[593,"digi-service-job-selector",{"name":[513],"taxonomyUrl":[513,"af-taxonomy-url"],"placeholder":[513,"af-placeholder"],"label":[513,"af-label"],"disabled":[516],"enableMultiple":[516,"af-enable-multiple"],"showSearchIcon":[516,"af-show-search-icon"],"errorMessage":[513,"af-error-message"],"labelDescription":[513,"af-label-description"],"required":[516,"af-required"],"manualInput":[516,"af-manual-input"],"history":[516,"af-history"],"popular":[516,"af-popular"],"size":[513,"af-size"],"taxonomyData":[1040],"afFocused":[32],"state":[32],"activeErrorType":[32],"animatingItemId":[32],"updateData":[64],"setSelection":[64],"setFocus":[64],"validate":[64],"checkValidity":[64],"reportValidity":[64],"getValidity":[64],"getValidationMessage":[64]},[[0,"afJobValidationChange","handleFormValidationSync"],[8,"hashchange","handleHashFocus"],[0,"csInput","handleInput"],[0,"csSelect","handleCsSelect"],[0,"csClear","handleCsClear"],[0,"csClearHistory","handleCsClearHistory"],[0,"csRequestHistory","handleCsRequestHistory"],[0,"csLoadMore","handleCsLoadMore"],[0,"csRemoveItem","handleCsRemoveItem"],[0,"csFocus","handleCsFocus"],[0,"csBlur","handleCsBlur"],[0,"csEditSelection","handleCsEditSelection"]],{"required":[{"watchRequired":0}],"manualInput":[{"watchManualInput":0}],"history":[{"watchHistory":0}],"popular":[{"watchPopular":0}],"enableMultiple":[{"watchEnableMultiple":0}],"disabled":[{"watchDisabled":0}],"taxonomyData":[{"watchTaxonomyData":0}]}]]]], options);
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
exports.setNonce = index.setNonce;
|
|
12
|
+
exports.defineCustomElements = defineCustomElements;
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var index = require('./index-BOuTGlEp.js');
|
|
4
|
+
var search_engine = require('./search.engine-D0cMelRi.js');
|
|
5
|
+
var taxonomyRegistry = require('./taxonomy-registry-DVmuDUpM.js');
|
|
6
|
+
require('./fuse-BTLNKxuL.js');
|
|
7
|
+
|
|
8
|
+
const neobrutalSearchCss = () => `:host{display:block;font-family:'Courier New', Courier, monospace;--bg-color:#fff4e6;--primary:#ff00ff;--secondary:#00ffff;--text:#000;--border:4px solid #000;--shadow:8px 8px 0px #000}.neobrutal-container{background-color:var(--bg-color);padding:40px;border:var(--border);box-shadow:var(--shadow);max-width:600px;margin:20px auto;min-height:600px;position:relative;box-sizing:border-box;display:flex;flex-direction:column;transition:min-height 0.6s cubic-bezier(0.23, 1, 0.32, 1)}.flip-container{perspective:1000px;width:100%}.flipper{transition:0.6s;transform-style:preserve-3d;position:relative;width:100%}.flip-container.flipped .flipper{transform:rotateY(180deg)}.front,.back{backface-visibility:hidden;top:0;left:0;width:100%}.front{z-index:2;transform:rotateY(0deg);position:relative}.flip-container.flipped .front{position:absolute}.back{transform:rotateY(180deg);box-sizing:border-box;position:absolute}.flip-container.flipped .back{position:relative;z-index:3}h1.glitch{font-size:3rem;font-weight:900;text-transform:uppercase;margin-bottom:30px;background-color:var(--primary);color:var(--text);display:inline-block;padding:5px 15px;border:var(--border);box-shadow:4px 4px 0px #000}.input-wrapper{margin-bottom:50px;padding-right:10px;padding-bottom:10px}input{width:100%;padding:20px;font-size:1.5rem;font-family:inherit;font-weight:bold;border:var(--border);background:white;outline:none;text-transform:uppercase;box-shadow:8px 8px 0px #000;transition:all 0.1s;box-sizing:border-box}.status{font-size:1.5rem;font-weight:bold;background-color:yellow;border:var(--border);padding:10px;margin-bottom:20px;text-align:center}.fire-status{font-size:1.8rem;font-weight:900;background-color:#ff4500;color:#fff;border:var(--border);padding:15px;margin-bottom:15px;text-align:center;position:relative;box-shadow:10px 10px 0px #000;animation:fire-flicker 0.2s infinite alternate}@keyframes fire-flicker{0%{transform:scale(1) rotate(-0.5deg)}100%{transform:scale(1.01) rotate(0.5deg)}}.fire-emoji{font-size:2rem;display:inline-block;margin:0 10px}.raw-data-container{margin-top:10px;margin-bottom:30px;background:#000;border:2px solid #fff;padding:15px;text-align:left;box-shadow:5px 5px 0px #ff00ff}.raw-label{font-size:0.8rem;color:#0f0;margin-bottom:5px;font-weight:bold}.raw-output{font-family:'Courier New', Courier, monospace;font-size:0.8rem;color:#0f0;margin:0;white-space:pre-wrap;word-break:break-all}.flip-btn{position:absolute;top:10px;right:10px;background:#000;color:#fff;border:2px solid #fff;padding:5px 10px;font-weight:bold;cursor:pointer;font-family:'Courier New', Courier, monospace;z-index:10}.flip-btn:hover{background:#ff00ff;color:#000}.source-view{background:#0d1117 !important;color:#e6edf3 !important;border-color:#30363d !important;padding:30px !important;display:flex;flex-direction:column}.source-header{font-size:2rem;color:#ff00ff;margin-bottom:20px;text-shadow:2px 2px 0 #000}.code-scroll-container{flex:1;background:#161b22;border:1px solid #30363d;border-radius:6px;padding:10px}.code-block{margin-bottom:25px;text-align:left}.code-label{background:#238636;color:#fff;display:inline-block;padding:4px 8px;font-weight:bold;font-size:0.8rem;border-radius:4px 4px 0 0}pre{background:#0d1117;margin:0;padding:10px;border:1px solid #30363d}pre code{font-family:'Courier New', Courier, monospace;font-size:0.85rem;line-height:1.4;background:transparent !important;color:#e6edf3}.result-card{background-color:white;border:var(--border);box-shadow:5px 5px 0px #000;padding:15px;transition:all 0.1s;cursor:pointer}.result-card:hover{transform:translate(2px, 2px);box-shadow:3px 3px 0px #000;background-color:var(--secondary)}.card-header{display:flex;justify-content:space-between;margin-bottom:10px;border-bottom:2px solid #000;padding-bottom:5px}.type-badge{background-color:yellow;padding:2px 8px;font-weight:bold;border:2px solid #000}.score-badge{background-color:lime;padding:2px 8px;font-weight:bold;border:2px solid #000}.label{font-size:1.2rem;font-weight:800}`;
|
|
9
|
+
|
|
10
|
+
// VIKTIGT: Dessa strängar representerar den FAKTISKA källkoden som användaren ser.
|
|
11
|
+
const SOURCE_CODE_JS = `import { Component, h, State, Element } from '@stencil/core';
|
|
12
|
+
import { TaxonomySearchEngine } from '../job-selector/logic/search.engine';
|
|
13
|
+
import { getRegisteredTaxonomy } from '../job-selector/taxonomy-registry';
|
|
14
|
+
|
|
15
|
+
@Component({ tag: 'neobrutal-search', styleUrl: 'neobrutal-search.css', shadow: true })
|
|
16
|
+
export class NeobrutalSearch {
|
|
17
|
+
@Element() el!: HTMLElement;
|
|
18
|
+
@State() engine: TaxonomySearchEngine | null = null;
|
|
19
|
+
@State() results: any[] = [];
|
|
20
|
+
@State() inputValue: string = '';
|
|
21
|
+
@State() isLoading: boolean = true;
|
|
22
|
+
@State() error: string = '';
|
|
23
|
+
@State() selectedItem: any | null = null;
|
|
24
|
+
@State() isFlipped: boolean = false;
|
|
25
|
+
|
|
26
|
+
async componentWillLoad() {
|
|
27
|
+
try {
|
|
28
|
+
const taxonomyData = getRegisteredTaxonomy();
|
|
29
|
+
this.engine = new TaxonomySearchEngine(taxonomyData);
|
|
30
|
+
this.isLoading = false;
|
|
31
|
+
} catch (err) {
|
|
32
|
+
this.error = 'DATA FAILURE';
|
|
33
|
+
this.isLoading = false;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
componentDidUpdate() {
|
|
38
|
+
if (this.isFlipped) this.highlightCode();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
highlightCode() {
|
|
42
|
+
const hljs = (window as any).hljs;
|
|
43
|
+
if (hljs && this.el?.shadowRoot) {
|
|
44
|
+
const blocks = this.el.shadowRoot.querySelectorAll('pre code');
|
|
45
|
+
blocks.forEach((block) => hljs.highlightElement(block));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
handleInput(event: Event) {
|
|
50
|
+
const query = (event.target as HTMLInputElement).value;
|
|
51
|
+
this.inputValue = query;
|
|
52
|
+
this.selectedItem = null;
|
|
53
|
+
|
|
54
|
+
if (!this.engine || query.length < 2) {
|
|
55
|
+
this.results = [];
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
this.results = this.engine.search(query, 3);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
handleSelect(item: any) {
|
|
63
|
+
this.selectedItem = item;
|
|
64
|
+
this.results = [];
|
|
65
|
+
this.inputValue = item.label;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
toggleFlip() {
|
|
69
|
+
this.isFlipped = !this.isFlipped;
|
|
70
|
+
if (this.isFlipped) setTimeout(() => this.highlightCode(), 100);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
render() {
|
|
74
|
+
return (
|
|
75
|
+
<div class="neobrutal-container">
|
|
76
|
+
{/* ... UI structure ... */}
|
|
77
|
+
</div>
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
}`;
|
|
81
|
+
const SOURCE_CODE_CSS = `.neobrutal-container {
|
|
82
|
+
background-color: #fff4e6;
|
|
83
|
+
padding: 40px;
|
|
84
|
+
border: 4px solid #000;
|
|
85
|
+
box-shadow: 8px 8px 0px #000;
|
|
86
|
+
font-family: 'Courier New', Courier, monospace;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.fire-status {
|
|
90
|
+
background-color: #ff4500;
|
|
91
|
+
animation: fire-flicker 0.2s infinite alternate;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.raw-data-container {
|
|
95
|
+
background: #000;
|
|
96
|
+
color: #0f0;
|
|
97
|
+
padding: 15px;
|
|
98
|
+
box-shadow: 5px 5px 0px #ff00ff;
|
|
99
|
+
}`;
|
|
100
|
+
const NeobrutalSearch = class {
|
|
101
|
+
constructor(hostRef) {
|
|
102
|
+
index.registerInstance(this, hostRef);
|
|
103
|
+
}
|
|
104
|
+
get el() { return index.getElement(this); }
|
|
105
|
+
engine = null;
|
|
106
|
+
results = [];
|
|
107
|
+
inputValue = '';
|
|
108
|
+
isLoading = true;
|
|
109
|
+
error = '';
|
|
110
|
+
selectedItem = null;
|
|
111
|
+
isFlipped = false;
|
|
112
|
+
async componentWillLoad() {
|
|
113
|
+
try {
|
|
114
|
+
console.log('[NeobrutalSearch] Initializing...');
|
|
115
|
+
const taxonomyData = taxonomyRegistry.getRegisteredTaxonomy();
|
|
116
|
+
this.engine = new search_engine.TaxonomySearchEngine(taxonomyData);
|
|
117
|
+
this.isLoading = false;
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
console.error('[NeobrutalSearch] Init failed:', err);
|
|
121
|
+
this.error = 'DATA FAILURE';
|
|
122
|
+
this.isLoading = false;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
componentDidUpdate() {
|
|
126
|
+
if (this.isFlipped) {
|
|
127
|
+
this.highlightCode();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
highlightCode() {
|
|
131
|
+
const hljs = window.hljs;
|
|
132
|
+
if (hljs && this.el?.shadowRoot) {
|
|
133
|
+
const blocks = this.el.shadowRoot.querySelectorAll('pre code');
|
|
134
|
+
blocks.forEach((block) => {
|
|
135
|
+
hljs.highlightElement(block);
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
handleInput(event) {
|
|
140
|
+
const query = event.target.value;
|
|
141
|
+
this.inputValue = query;
|
|
142
|
+
this.selectedItem = null;
|
|
143
|
+
if (!this.engine || query.length < 2) {
|
|
144
|
+
this.results = [];
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
const searchResults = this.engine.search(query, 3);
|
|
148
|
+
this.results = searchResults;
|
|
149
|
+
}
|
|
150
|
+
handleSelect(item) {
|
|
151
|
+
this.selectedItem = item;
|
|
152
|
+
this.results = [];
|
|
153
|
+
this.inputValue = item.label;
|
|
154
|
+
}
|
|
155
|
+
toggleFlip() {
|
|
156
|
+
this.isFlipped = !this.isFlipped;
|
|
157
|
+
if (this.isFlipped) {
|
|
158
|
+
setTimeout(() => this.highlightCode(), 100);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
render() {
|
|
162
|
+
return (index.h("div", { key: '032a555551974ef504c703419db83581652a5083', class: `flip-container ${this.isFlipped ? 'flipped' : ''}` }, index.h("link", { key: '8af8fac02cd7b8ac1112c08c51e32be3845b7647', rel: "stylesheet", href: "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/styles/atom-one-dark.min.css" }), index.h("div", { key: '5f63de826af07f1139126a64fb205f65e14f5060', class: "flipper" }, index.h("div", { key: 'a7878c0a9db257884cedab104366639d2edb506b', class: "front neobrutal-container" }, index.h("button", { key: '6d65c76d93c717e7c056f0e2da60d2f825efd781', class: "flip-btn", onClick: () => this.toggleFlip() }, "FLIP_ME \uD83D\uDD04"), index.h("h1", { key: '56981f916be340a827e376cb713e6b6fb5e097bb', class: "glitch", "data-text": "YRKE_S\u00D6K" }, "YRKE_S\u00D6K"), index.h("div", { key: 'ba3c2e76b631e0d48c5f2ecee1095a999393822e', class: "input-wrapper" }, index.h("input", { key: '75a8e4553a2e77992efa9591a64fba83c3dbe3ea', type: "text", placeholder: "VAD VILL DU BLI?", onInput: (e) => this.handleInput(e), value: this.inputValue, disabled: this.isLoading })), this.isLoading && index.h("div", { key: '46ec1526451477d7ecf90ffe46dd964986096903', class: "status" }, "LOADING_DATA..."), this.error && index.h("div", { key: '01bc30a4d4e17e493d8deb08c7e5b71da9c23df7', class: "status error" }, this.error), this.selectedItem && (index.h("div", { key: '0e6d79bc76dbecd7a79bbf0b00246acdef45eda3' }, index.h("div", { key: 'f942688584b54c4b43679903549781fbe346e154', class: "fire-status" }, index.h("span", { key: 'efde5818a4449b710d22e43e9c8148f380f89f3d', class: "fire-emoji" }, "\uD83D\uDD25 \uD83D\uDD25 \uD83D\uDD25"), "HETT VAL: ", this.selectedItem.label.toUpperCase(), "!", index.h("span", { key: '7764fa1ed1fd7b0541f5ad3a49e3135f4a61edfe', class: "fire-emoji" }, "\uD83D\uDD25 \uD83D\uDD25 \uD83D\uDD25")), index.h("div", { key: '415e1ee36443cc50cddb0f87e8750b34084fd485', class: "raw-data-container" }, index.h("div", { key: 'ed730d664599ecac4a89ccdf597833ea3f9fb47a', class: "raw-label" }, "RAW_JSON_DATA:"), index.h("pre", { key: '0921ef8ebccb5add5e9d379e31872b2798b399f8', class: "raw-output" }, JSON.stringify(this.selectedItem, null, 2))))), index.h("div", { key: '9af42c5d7cb9d901b6909e8ea4260da7dfee09fd', class: "results-container" }, this.results.map(result => {
|
|
163
|
+
const metadata = result?.metadata || {};
|
|
164
|
+
const original = metadata?.originalResult;
|
|
165
|
+
return (index.h("div", { class: "result-card", onClick: () => this.handleSelect(result) }, index.h("div", { class: "card-header" }, index.h("span", { class: "type-badge" }, original?.category === 'job-title' ? 'YRK' : 'GRP'), index.h("span", { class: "score-badge" }, "SCR: ", Math.round((metadata?.score || 0) * 10))), index.h("div", { class: "card-body" }, index.h("div", { class: "label" }, result.displayLabel || result.label))));
|
|
166
|
+
}))), index.h("div", { key: '349e56ba67845d6b63ab8616823c5909452ed593', class: "back neobrutal-container source-view" }, index.h("button", { key: '1de742d808b48a65bb266ea19a83ccf567a76ac6', class: "flip-btn", onClick: () => this.toggleFlip() }, "BACK \uD83D\uDD19"), index.h("h1", { key: 'b2400cbd8d36417df1cbb3c487fa7e3d824f4a02', class: "source-header" }, "FULL_SOURCE_CODE"), index.h("p", { key: '59c3e040a7177810b53200426da4543f99c7ca73', class: "source-desc" }, "Exakt den koden du ser, inga fejk snippets h\u00E4r inte:"), index.h("div", { key: '8ed08d5d1d79ec49c6e6bb6a5be504ddd6ed84c2', class: "code-scroll-container" }, index.h("div", { key: '5018114c97191ccf174ae197d56917f35848dcef', class: "code-block" }, index.h("div", { key: '466523ef6acb91d435248d5d399fef5a79bc2e6f', class: "code-label" }, "neobrutal-search.tsx"), index.h("pre", { key: '2a3ad662ac5a0346131aaa13dfd9544169338e48' }, index.h("code", { key: '76b3240d79589217899d74f6727b64d1c8495d7a', class: "language-typescript" }, SOURCE_CODE_JS))), index.h("div", { key: '2990f5d3da12a8c8ffeccbb4f786945b7eb70483', class: "code-block" }, index.h("div", { key: '5b957f082c75f5de3f5bd766c9fd135e1ee06471', class: "code-label" }, "neobrutal-search.css"), index.h("pre", { key: '8a2c509035923387c2dac463b72feda6c2c41ba2' }, index.h("code", { key: '581e2ccebcef975ac6dd79059da4c82cb0ffe176', class: "language-css" }, SOURCE_CODE_CSS))))))));
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
NeobrutalSearch.style = neobrutalSearchCss();
|
|
170
|
+
|
|
171
|
+
exports.neobrutal_search = NeobrutalSearch;
|