1.14.0 • Published 6 months ago

@keepeek/keepicker-react v1.14.0

Weekly downloads
-
License
-
Repository
-
Last release
6 months ago

Integration

Steps to use the Keepicker

Import the JavaScript file registering kpk-keepicker web component:

<head>
  <script
    async
    src="https://cdn.jsdelivr.net/npm/@keepeek/keepicker-react@1/dist/index.js"
  ></script>
</head>

Add the web component tag in the DOM:

<body>
  <kpk-keepicker
    id="keepicker"
    keycloak-client-id="XXX"
    api-endpoint="XXX"
    data-locale="FR"
    ui-locale="FR"
  ></kpk-keepicker>
</body>

Add a callback that will be triggered when selecting an asset:

<script>
  document
    .querySelector("#keepicker")
    .addEventListener("kpk-insert", (event) => {
      console.log(event.detail);
    });
  document
    .querySelector("#keepicker")
    .addEventListener("kpk-insert-link", (event) => {
      console.log(event.detail);
    });
</script>

Use the events to insert content

Keepicker events are triggered for all asset types: pictures, videos, audio files, documents and other assets. Below are some examples of event content.

Event for a picture

kpk-insert event detail will contain the following JSON content for a picture:

{
  "element": {
    "id": 123,
    "title": {
      "id": "title",
      "type": "TEXT",
      "name": "Title",
      "value": "Media title"
    },
    "originalFileName": "123.jpg",
    "previewUrl": "https://keepeek.com/previewUrl.jpg",
    "fields": [
      {
        "id": "title",
        "type": "TEXT",
        "name": "Title",
        "value": "Media title"
      },
      { "id": "...", "type": "...", "name": "...", "value": "..." }
    ],
    "permalinks": [
      {
        "title": "whr",
        "description": "...",
        "url": "https://keepeek.com/permanentPreviewUrl.jpg"
      },
      {
        "title": "...",
        "description": "...",
        "url": "..."
      }
    ],
    "imagesServiceUrl":"kpk://dynameek-kpk/1200/bwb6bw8xrm.jpg",
    "imagesServicePermalinks":"kpkp://dynameek-kpk/1200/g9g0wtj8ky.jpg",
    "...": "..."
  }
}

To get a picture, use the following code:

const url = event.detail.element.permalinks.find(
  (permalink) => permalink.title === "whr"
)?.url;

Event for a video

kpk-insert event detail will contain the following JSON content for a video:

{
  "element": {
    "id": 123,
    "title": {
      "id": "title",
      "type": "TEXT",
      "name": "Title",
      "value": "Media title"
    },
    "previewUrl": "https://keepeek.com/previewUrl.jpg",
    "fields": [
      {
        "id": "title",
        "type": "TEXT",
        "name": "Title",
        "value": "Media title"
      },
      {
        "id": "...",
        "type": "...",
        "name": "...",
        "value": "..."
      }
    ],
    "mediaType": "video/mp4",
    "permalinks": [
      {
        "title": "preview",
        "description": "...",
        "url": "https://keepeek.com/permanentPreviewVideo.mp4"
      },
      {
        "title": "...",
        "description": "...",
        "url": "..."
      }
    ],
    "...": "..."
  }
}

To get preview video, use the following code:

const url = event.detail.element.permalinks.find(
  (permalink) => permalink.title === "preview"
)?.url;

Event for a generated picture

kpk-insert-link event detail will contain the following JSON content for a generated picture:

{
  "element": {
    "id": 123,
    "title": {
      "id": "title",
      "type": "TEXT",
      "name": "Title",
      "value": "Media title"
    },
    "fields": [
      {
        "id": "title",
        "type": "TEXT",
        "name": "Title",
        "value": "Media title"
      },
      {
        "id": "...",
        "type": "...",
        "name": "...",
        "value": "..."
      }
    ],
    "permalinks": [
      {
        "title": "...",
        "description": "...",
        "url": "..."
      }
    ],
    "imagesServiceUrl":"kpk://dynameek-kpk/1200/bwb6bw8xrm.jpg",
    "imagesServicePermalinks":"kpkp://dynameek-kpk/1200/b9g0wtj8ky.jpg",
    "...": "..."
  },
  "link": "https://keepeek.com/generatedPictureUrl.jpg"
}

In this example, the imagesServiceUrl and imagesServicePermalinks keys contain the picture URLs used to call the Dynameek service. imagesServiceUrl is used to target the current picture version, while imagesServicePermalinks always points to the last picture version.

To get generated picture, use the following code:

const url = event.detail.link;

Examples

React

function App() {
  const ref = useRef();

  useEffect(() => {
    if (ref && ref.current) {
      const currentRef = ref.current;
      const handleInsert = (event) => console.log(event.detail.element);
      currentRef.addEventListener("kpk-insert", handleInsert);
      return () => {
        currentRef.removeEventListener("kpk-insert", handleInsert);
      };
    }
  }, []);
  return (
    <div className="App">
      <kpk-keepicker
        ref={ref}
        keycloak-client-id="XXX"
        api-endpoint="XXX"
        data-locale="FR"
        ui-locale="FR"
      ></kpk-keepicker>
    </div>
  );
}

Drupal form

To integrate component in a form, add a container:

$form['container']['picker'] = [
  '#type' => 'container',
  '#attributes' => array('id'=>'kpk-keepicker-container'),
];

Add a behaviour to mount web component:

Drupal.behaviors.addKeepickerWebComponentMarkup = {
  attach: function (context) {
    if (context.id === "node-article-edit-form") {
      document.querySelector("#kpk-keepicker-container").innerHTML =
        '<kpk-keepicker id="keepicker" keycloak-client-id="XXX" api-endpoint="XXX" data-locale="FR" ui-locale="FR"></kpk-keepicker>';
      document
        .querySelector("#keepicker")
        .addEventListener("kpk-insert", (event) => {
          document.querySelector(".keepicker-url").value =
            event.detail.element.previewUrl;
        });
    }
  },
};

List of attributes

NameMandatoryTypeDefault valueDescription
api-endpointnoStringAPI EndpointIf not provided, the user will need to enter the Keepeek instance URL to connect
keycloak-client-idnoStringDefault Keepicker Client IDKeycloak Client ID
keycloak-idpnoStringFRKeycloak IDP to add a SSO button
data-localenoStringFRData locale
ui-localenoStringFRInterface locale

List of events

NameDescription
kpk-insertEvent dispached when inserting one element
kpk-insert-linkEvent dispached when inserting a generated picture
1.14.0

6 months ago

1.6.0-beta.88

1 year ago

1.6.0-beta.89

1 year ago

1.14.0-beta.2

6 months ago

1.14.0-beta.1

7 months ago

1.6.0-beta.90

11 months ago

1.13.2-beta.1

10 months ago

1.12.0

1 year ago

1.13.2

9 months ago

1.13.1

11 months ago

1.13.0

11 months ago

1.6.0-beta.86

1 year ago

1.6.0-beta.87

1 year ago

1.7.1

1 year ago

1.6.0-beta.84

1 year ago

1.6.0-beta.85

1 year ago

1.6.0-beta.82

1 year ago

1.6.0-beta.83

1 year ago

1.6.0-beta.79

1 year ago

1.6.0-beta.77

1 year ago

1.6.0-beta.78

1 year ago

1.6.0-beta.80

1 year ago

1.6.0-beta.81

1 year ago

1.6.0-beta.75

1 year ago

1.6.0-beta.76

1 year ago

1.6.0-beta.73

1 year ago

1.6.0-beta.74

1 year ago

1.6.0-beta.71

1 year ago

1.6.0-beta.72

1 year ago

1.6.0-beta.70

1 year ago

1.10.0

1 year ago

1.11.0

1 year ago

1.6.0-beta.59

1 year ago

1.6.0-beta.57

1 year ago

1.6.0-beta.58

1 year ago

1.6.0-beta.56

1 year ago

1.6.0-beta.64

1 year ago

1.6.0-beta.65

1 year ago

1.6.0-beta.62

1 year ago

1.6.0-beta.63

1 year ago

1.6.0-beta.68

1 year ago

1.6.0-beta.69

1 year ago

1.6.0-beta.66

1 year ago

1.6.0-beta.67

1 year ago

1.6.0-beta.60

1 year ago

1.6.0-beta.61

1 year ago

1.6.0-beta.53

1 year ago

1.6.0-beta.54

1 year ago

1.6.0-beta.51

1 year ago

1.6.0-beta.52

1 year ago

1.6.0-beta.55

1 year ago

1.6.0-beta.50

1 year ago

1.6.0-beta.49

1 year ago

1.6.0-beta.48

1 year ago

1.9.0

1 year ago

1.6.0-beta.47

1 year ago

1.6.0-beta.28

1 year ago

1.6.0-beta.29

1 year ago

1.6.0-beta.26

2 years ago

1.6.0-beta.27

1 year ago

1.6.0-beta.24

2 years ago

1.6.0-beta.25

2 years ago

1.6.0-beta.39

1 year ago

1.8.0

1 year ago

1.6.0-beta.37

1 year ago

1.6.0-beta.38

1 year ago

1.6.0-beta.31

1 year ago

1.6.0-beta.32

1 year ago

1.6.0-beta.30

1 year ago

1.6.0-beta.35

1 year ago

1.6.0-beta.36

1 year ago

1.6.0-beta.42

1 year ago

1.6.0-beta.43

1 year ago

1.6.0-beta.40

1 year ago

1.6.0-beta.41

1 year ago

1.6.0-beta.46

1 year ago

1.6.0-beta.44

1 year ago

1.6.0-beta.45

1 year ago

1.7.0

1 year ago

1.6.0-beta.23

2 years ago

1.6.0-beta.20

2 years ago

1.6.0-beta.21

2 years ago

1.6.0-beta.22

2 years ago

1.6.0-beta.19

2 years ago

1.6.0

2 years ago

1.6.0-beta.18

2 years ago

1.6.0-beta.17

2 years ago

1.6.0-beta.15

2 years ago

1.6.0-beta.16

2 years ago

1.6.0-beta.14

2 years ago

1.6.0-beta.13

2 years ago

1.6.0-beta.12

2 years ago

1.6.0-beta.10

2 years ago

1.6.0-beta.11

2 years ago

1.6.0-beta.9

2 years ago

1.6.0-beta.8

2 years ago

1.6.0-beta.7

2 years ago

1.6.0-beta.6

2 years ago

1.6.0-beta.4

2 years ago

1.6.0-beta.5

2 years ago

1.6.0-beta.3

2 years ago

1.6.0-beta.2

2 years ago

1.6.0-beta.1

2 years ago

1.5.0-beta.6

2 years ago

1.5.0-beta.5

2 years ago

1.5.0

2 years ago

1.5.0-beta.4

2 years ago

1.5.0-beta.2

2 years ago

1.5.0-beta.3

2 years ago

1.5.0-beta.1

2 years ago

1.4.1-beta.2

2 years ago

1.4.1-beta.1

2 years ago

1.2.0-beta.1

2 years ago

1.4.0

2 years ago

1.3.0

2 years ago

1.2.0

2 years ago

1.1.0

2 years ago

1.0.0-beta.51

2 years ago

1.0.0-beta.50

2 years ago

1.0.0-beta.49

2 years ago

1.0.0-beta.48

2 years ago

1.0.0-beta.47

2 years ago

1.0.0-beta.46

2 years ago

1.0.0-beta.45

2 years ago

1.0.0-beta.44

2 years ago

1.0.0-beta.43

2 years ago

1.0.0-beta.42

2 years ago

1.0.0-beta.41

2 years ago

1.0.0-beta.40

2 years ago

1.0.0-beta.39

2 years ago

1.0.0-beta.38

2 years ago

1.0.0-beta.37

2 years ago

1.0.0-beta.36

2 years ago

1.0.0-beta.35

2 years ago

1.0.0-beta.34

2 years ago

1.0.0-beta.33

2 years ago

1.0.0-beta.32

2 years ago

1.0.0-beta.31

2 years ago

1.0.0-beta.30

2 years ago

1.0.0-beta.29

2 years ago

1.0.0-beta.28

2 years ago

1.0.0-beta.27

2 years ago

1.0.0-beta.26

2 years ago

1.0.0-beta.25

2 years ago

1.0.0-beta.24

2 years ago

1.0.0-beta.23

2 years ago

1.0.0-beta.22

2 years ago

1.0.0-beta.21

2 years ago

1.0.0-beta.20

2 years ago

1.0.0-beta.19

2 years ago

1.0.0-beta.18

2 years ago

1.0.0-beta.17

2 years ago

1.0.0-beta.16

2 years ago

1.0.0-beta.15

2 years ago

1.0.0-beta.14

2 years ago

1.0.0-beta.13

2 years ago